Comment puis-je renvoyer un type anonyme à partir d’une méthode ?
-
09-06-2019 - |
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
}
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
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