Frage

Ich habe eine Linq-Abfrage, die ich von mehreren Orten aus aufrufen möchte:

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

Wie kann ich eine Methode erstellen, diesen Code darin einfügen und sie dann aufrufen?

public  ???  GetSomeData()
{
   // my Linq query
}
War es hilfreich?

Lösung

IQueryable und IEnumerable beide arbeiten. Aber Sie wollen eine Art spezifische Version, IQueryable<T> oder IEnumerable <T> verwenden.

So werden Sie wollen eine Art erstellen, um die Daten zu halten.

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

Andere Tipps

IQueryable

So Ihre Methodendeklaration wie

aussehen würde
public IQueryable GetSomeData()

Eine generische Methode sollten Sie IntelliSense:

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};
 }

Wenn Sie zurückkommen wollen, müssen Sie einen Typ.

Statt var erklären IEnumerable<> verwenden und diese Variable zurück. Iterieren durch sie die Abfrage tatsächlich ausgeführt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top