2016-06-14 45 views
0

我有點惱火與這一個,我有顧客從查詢來的清單:可以限制返回的結果由多個值

IQueryable<Customer> Customers() 
{ 
return myDc.Customers; 
} 

這將返回所有的客戶。

Customers表有兩個附加列,風險狀態。風險告訴我們該客戶有什麼風險,狀態告訴我們他們的賬戶處於何種狀態。

用戶有一個搜索頁面,他們選擇多個風險和狀態。我將它們的選定值捕獲到整數的List中,並希望將其傳遞到上面的查詢中。

由於用戶可以選擇多個風險值(和狀態),如果我具有圍繞Customers查詢它不獲取所有用戶選擇即

foreach (int r in RisksList) 
{ 
    return Customers.Where(r=> r.Risk.Tostring().Contains(r.ToString()); 
} 

的風險時,上述查詢執行它限制它foreach到找到的第一個風險,但是RisksList中包含的任何其他風險都未被捕獲。

我會做同樣的狀態(一旦我有正確的風險記錄)。

我如何限制RisksList(然後限制StatusList)中包含的整數值找到的所有客戶?

編輯1

IQueryable<Customer> customers = from c in myDc.Customers select c; 

    foreach (int i in RisksList) 
    { 
     customers = from cc in customers where (RisksList.Contains(i)) select cc; 
    } 
+0

我會,因爲它是在'foreach'和lambda表達式 –

+0

你有什麼期望回國做相同的變量命名'r'? – Paparazzi

回答

0

當上述查詢執行它它限制到找到的第一個風險,但 包含RisksList內的任何其他風險不捕獲。

這是因爲您的循環中有您的return聲明。

,而不是返回的結果,你可以把它添加到一個結果列表,或者你可以嘗試更清潔的方式:

return Customers.Where(r=> RiskLists.Contains(r.Risk)); 

同爲你的其他名單。

+0

感謝您的回覆。我在等待編輯1的列表中進行了更改。這給我提供了整個客戶列表,而不是限制它? – Computer

+0

我的示例將爲您提供RiskLists中包含Risk的所有客戶 – Panda

1

刪除foreach只是使用它。

return Customers.Where(r=> RisksList.Any(x=> r.Risk.ToString().Contains(x.ToString()));