2011-12-14 83 views
1

我有一個使用既有聯盟和「IN」聲明使用聯盟和包含在LINQ

select FirstName 
From Person 
where Lastname in ('Smith','Jones') 
and MiddleInitial In ('A','G','M',) 

UNION 

Select PersonFirstName as Firstname 
FROM BusinessPerson 
WHERE CorporateName in ('Jones','Thomas') 
And CorporateDirection IN ('N','S') 

我有包括PersonFirstName,姓氏,MiddleInitial,corporateName和corporatedirection爲屬性的自定義對象下面的SQL查詢。

我試圖加載未經過濾的內存聯合一次,然後寫集合的linq查詢,而不是去每個請求的數據庫。

由於我想過濾集合中每個對象的屬性,我試圖使用包含每個屬性,但沒有太大的成功。

我有一個字母的字符串數組,併爲我的一些過濾器的名稱的字符串數組,但未能將它們適用於Linq查詢,並不能確定如何獲取一個包含與對象上的屬性一起使用在集合內。

我試圖像

string[] corporateNameCollection = new string[] { "Kmart", "Walmart" }; 

var filteredObject = personCollection.Where(b=>b.CorporateName.Contains(corporateNameCollection)); 

任何建議使用對集合對象的屬性字符串數組?

感謝,

回答

3

你想:

.Where(b => corporateNameCollection.Contains(b.CorporateName)); 

這則說法是否corporateNameCollection包含每個b.CorporateName的。 並且應該在Linq-SQL中轉換爲IN

0

您是否嘗試過檢查,如果該字符串數組包含匹配CorporateName,像這樣的元素:

string[] corporateNameCollection = new string[] { "Kmart", "Walmart" }; 
var filteredObject = personCollection 
    .Where(b => corporateNameCollection.Contains(b.CorporateName)); 
0
string[] corporateNameCollection = new string[] { "Kmart", "Walmart" }; 

    var filteredObject = personCollection.Where(b=>corporateNameCollection.Contains( b.CorporateName)); 

這應該工作。