Question

J'ai une requête Linq que je souhaite appeler depuis plusieurs endroits :

var myData = from a in db.MyTable
             where a.MyValue == "A"
             select new  {
                            a.Key,
                            a.MyValue
                          };

Comment puis-je créer une méthode, y mettre ce code, puis l'appeler ?

public  ???  GetSomeData()
{
   // my Linq query
}
Était-ce utile?

La solution

IQueryable et IEnumerable fonctionnent tous les deux.Mais vous souhaitez utiliser une version spécifique à un type, IQueryable<T> ou IEnumerable <T>.

Vous souhaiterez donc créer un type pour conserver les données.

var myData = from a in db.MyTable
             where a.MyValue == "A"
             select new MyType
             {
                 Key = a.Key,
                 Value = a.MyValue
             };

Autres conseils

IQueryable

Votre déclaration de méthode ressemblerait donc à

public IQueryable GetSomeData()

Une méthode générique devrait vous donner une intelligence :

public class MyType {Key{get;set;} Value{get;set}}

public IQueryable<T> GetSomeData<T>() where T : MyType, new() 
 { return from a in db.MyTable
          where a.MyValue == "A" 
          select new T {Key=a.Key,Value=a.MyValue};
 }

Si vous souhaitez revenir, vous avez besoin d'un type.

Au lieu de var, déclarez en utilisant IEnumerable<> et renvoie cette variable.Le parcourir exécute en fait la requête.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top