0

以下に示す一般的なクエリメソッドを持つリポジトリパターンでEF4を使用しています。

public IEnumerable<T> Query(Expression<Func<T, bool>> filter) 
    { 
        return objectSet.Where(filter); 
    } 

私はこのような完全なオブジェクトを選択できることを知っています:

context.PeriodRepository.Query(a => a.EntityId == selectedEntityId); 

しかし、メソッドを変更せずにLINQ式を使用するtype代わりに、それを返すLinqクエリを渡したいと思います。IEnumerable<type>その方法を教えてください。

4

2 に答える 2

3

First()orメソッドを使用FirstOrDefault()し、述語を渡して、最初でない場合は必要な要素を見つけます。

于 2012-09-03T02:18:47.730 に答える
1

クエリは、リストで実行される操作を記述します。結果を取得するには、クエリを実行する必要があります。

.ToList()/を使用.ToArray()すると、クエリに一致するすべてのアイテムが返されます。.First()一致する最初のアイテムを.FirstOrDefault()取得するため、または一致しない場合の最初のアイテムまたはデフォルト値を取得するために使用します。

クラスのデフォルト値はですnull

私はあなたのコードは次のようになるべきだと思います:

var myMatch = context.PeriodRepository
   .Query(a => a.EntityId == selectedEntityId)
   .First();

First()また、一致するものがない場合は例外をスローすることに注意してください。

于 2012-09-03T02:28:52.097 に答える