2012-08-08 31 views
1

我看到了一些使用EF通用可靠性的例子。我對LINQ沒有很好的把握,所以我無法理解如何使用這種方法。你能否引導我?這是我的代碼。我不知道我將如何傳遞一個表達式。請高度appriciate如果你可以用例子來指導。如何使用EF庫的find方法?

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

感謝

回答

2

您可以以同樣的方式使用此方法,在那裏你會使用LINQ。

例如如果T是一個用戶,一個Name屬性,你可以做

Query(u=>u.Name == "Bob"); 

這種類型的表達式被稱爲lambda表達式。有關詳細信息,你可以看看http://msdn.microsoft.com/en-us/library/bb397687.aspx

1

你會打電話像這樣這樣的方法,假設你想創建一個具體的倉庫實現:

var repo = new StuffRepo(); 

IEnumerable<Stuff> stuff = repo.Query(s => s.SomeProperty == "Foo"); 

SO表達,或過濾器,是一個匿名函數(Func),該函數接受一個T(在我的例子中,是一個Stuff,由別名s指出),並返回一個布爾值。因此在SQL中:

select * 
from stuff s 
where s.SomeProperty = "Foo"