J'ai plusieurs requêtes identiques à l'exception du sujet et des paramètres de la requête et j'essaie de formuler une requête 'généralisée' pour éviter plusieurs lignes de code presque identiques.Généraliser la requête LINQ?
Je le code suivant:
Code Snippet
private IEnumerable doQuery(string rangeVar,
DataSet dsSubTable,
string qrySubject,
string subTableKey,
string subTableDescription,
string fldName)
{
qryStart = dtmpickFrom.Value;
qryEnd = dtmpickTo.Value;
var groupQuery =
from trans in dataSet.Transaction
where ((trans.T_Date >= qryStart) && (trans.T_Date <= qryEnd))
from rangeVar in dataSet.dsSubTable <<<<<<
where trans.qrySubject == rangeVar.subTableKey
select new ..... <snipped>
Le compilateur ne sera pas accepter le dsSubTable (montré < < < < <) avec le message suivant:
'ExpenditureLINQDataSets.Expenditure' ne contient pas de définition pour 'dsSubTable' et aucune méthode d'extension « dsSubTable » accepter un premier argument de type « ExpenditureLINQDataSets.Expenditure » pu être trouvée (vous manque une directive à l'aide ou une référence d'assemblage?) »
Je me rends compte, bien sûr (si j'essaie de donner à dsSubTable un type de dépense ..... seuls les noms de table réels définis dans mon DataSet apparaissent dans Intellisense.)
Est-il possible de généraliser de telles requêtes LINQ ou dois-je vivre avec plusieurs requêtes identiques? requêtes dans mon code?
Toute aide appréciée!
Je suis sûr qu'il existe un moyen d'y parvenir, mais le code/question est très déroutant car je n'ai aucune idée de la façon dont fonctionne votre classe Expenditure. Pourriez-vous essayer de recréer le scénario dans un nouveau code de test qui ne dépend pas de tous vos objets métier pour aider les autres à comprendre? –