2013-02-19 54 views
1

我最多有4個值:字符串firstName,字符串lastName,字符串ssn,日期時間dateOfInjury。用戶可以輸入這些或任何組合中的任何一個。如果他們輸入多個,我想使用AND返回結果。例如,firstName匹配的地方(如果這是他們輸入的全部),或者如果firstName和lastName匹配(如果它們輸入了兩個),依此類推。用LINQ做這件事的最好方法是什麼?我希望有一件更優雅的東西,那就是一個巨大的開關語句。高級搜索LINQ到EF

我打算動態構建where子句,但看起來好像不會起作用:Building dynamic where clauses in LINQ to EF queries

回答

2

只需構建您的查詢。如果你有一系列Where調用,那麼這些調用就會AND'd在一起。

IQueryable<Customer> query = source.Customers; 

if (firstName != null) 
{ 
    query = query.Where(c => c.FirstName == firstName); 
} 
if (lastName != null) 
{ 
    query = query.Where(c => c.LastName == lastName); 
} 
+0

啊。那麼每個查詢的結果集會稍微進一步降低?這從來沒有發生過。我會給它一個鏡頭。 – birdus 2013-02-19 15:45:48

+0

這很好用!謝謝! – birdus 2013-02-19 15:59:55