J'ai une méthode qui obtient des lignes de ma base de données. Cela ressemble à ceci:ne linq où appel réduire les appels à ma base de données (construit sur mesure)
public static IEnumerable<Dictionary<string, object>> GetRowsIter()
{
_resultSet.ReadFirst();
do
{
var resultList = new Dictionary<string, object>();
for (int fieldIndex = 0; fieldIndex < _resultSet.FieldCount; fieldIndex++)
{
resultList.Add(_resultSet.GetName(fieldIndex),
_resultSet.GetValue(fieldIndex));
}
yield return resultList;
} while (_resultSet.ReadRelative(1));
yield break;
}
C'est génial quand je veux retourner toutes les lignes. Mais parfois je veux retourner seulement quelques lignes.
Je prévois d'écrire ma propre méthode (GetRowsIterWhere(string column, object whereValue)
), mais je me demande si je peux utiliser le linq où sur ma méthode. J'avoue que je ne sais pas comment cela fonctionnerait, car j'avance le lecteur avec un ReadRelative (1) pour passer à la valeur suivante. Donc, même s'il «pense» qu'il saute des lignes, il ne les sautera pas vraiment.
Je suis vraiment préoccupé par la performance ici (je suis actuellement refactoring de Linq à datasets, car il était bien chemin trop lent.)
Alors, ma question est, dois-je écrire mon propre Where
méthode de type ou puis-je changer celui ci-dessus pour travailler avec la méthode linq where
?
WOW. Je pensais que j'étais juste pour décent à C#, mais je ne sais même pas où brancher cela. Je vais devoir faire quelques recherches avant de pouvoir l'utiliser. – Vaccano
@Vaccano - votre commentaire; par exemple, avec LINQ-to-SQL, 'yourDataContext.SomeTable' est un' IQueryable '. –