メソッドから匿名型を返すにはどうすればよいですか?
-
09-06-2019 - |
質問
複数の場所から呼び出したい Linq クエリがあります。
var myData = from a in db.MyTable
where a.MyValue == "A"
select new {
a.Key,
a.MyValue
};
メソッドを作成し、その中にこのコードを配置して、それを呼び出すにはどうすればよいですか?
public ??? GetSomeData()
{
// my Linq query
}
解決
IQueryable と IEnumerable は両方とも機能します。ただし、型固有のバージョンである IQueryable を使用したいとします。<
T>
または IEnumerable <
T>
.
したがって、データを保持するタイプを作成する必要があります。
var myData = from a in db.MyTable
where a.MyValue == "A"
select new MyType
{
Key = a.Key,
Value = a.MyValue
};
他のヒント
一般的なメソッドを使用すると、インテリセンスが得られます。
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};
}
戻りたい場合は、タイプが必要です。
の代わりに var
, を使用して宣言します IEnumerable<>
そしてその変数を返します。それを反復処理すると、実際にクエリが実行されます。
所属していません StackOverflow