J'ai une requête linq qui produit une séquence de types anonymes. La requête est définie comme:Comment déclarer une variable globale pour une requête linq qui produit une séquence de types anonymes
var query = from a in Db.Table1
join b from Db.Table2
join...
...
select new {
a.field1, a.field2,
b.field1, NewName = b.field2 };
Maintenant, je voudrais utiliser cette requête dans le scénario suivant:
if (x == 1)
{ query = ...
...rest of code_1 }
if (x == 2)
{ query = ...
...rest of code_2 }
« requête » de la première « si » utilisera différentes tables, jointures et où la déclaration que la requête de la seconde 'if', mais les deux auront exactement la même déclaration 'select new'. Pour cela, j'ai besoin de déclarer une variable 'query' qui sera visible dans les instructions 'if'.
Quand je suis « type » de la « requête » en utilisant:
query.GetType().ToString();
il me donne:
query type = 'System.Data.Objects.ObjectQuery`1[<>f__AnonymousType7`14[System.Int32,System.String,System.String,System.String,System.Nullable`1[System.DateTime],System.Decimal,System.Nullable`1[System.DateTime],System.Decimal,System.String,System.String,System.String,System.String,System.String,System.String]]'
Je ne peux pas déclarer une classe distincte que je ne peux écrire dans un méthode que j'écris le code de. Comment dois-je déclarer une variable 'query'?
Vous pouvez utiliser le 'IQeuryable'or non générique' dynamic'. – Michael
On dirait beaucoup de problèmes juste pour créer des problèmes pour vous-même. –
Avec IQueryable je ne serai pas en mesure d'utiliser plus tard if (query.Count()> 0) - ai-je raison? – phoenix