2012-04-26 53 views
0

我需要加入多種標準LINQ查詢裏面,我有一個低於標準箱:使用LINQ的加入多個標準(號碼事先不知道)

enter image description here

目前我是個查詢比只能處理單個標籤:

var c = *text after the t:* 
var r = rs.Returns.Where(x => x.Lines.Any(y => y.Tags.Any(z => z.Name.Contains(c)))); 

我需要這樣的東西(這可能是不正確的):

var r = rs.Returns.Where(x => x.Lines.Any(y => y.Tags.Any(z => z.Name.Contains(*1st Tag*)) && y.Tags.Any(z.Name.Contains(*2nd Tag*)))); .. etc 

因此,所有tagsLine已被搜索並AND被應用。有沒有簡單的方法來實現這樣的事情?

非常感謝提前。

回答

0

我認爲你正在尋找的東西是這樣的:

List<string> tags = new List<string>() { "tag1", "tag2" }; 

var query = rs.Returns.AsEnumerable(); 
foreach(string tag in tags) 
{ 
    string tmp = tag; 
    query = query.Where(x => x.Lines.Any(y => y.Tags.Any(z => z.Name.Contains(tmp)))); 
} 
2
var r = rs.Returns.Where(x => x.Lines.Any(y => searchTags.All(stag => y.Tags.Any(z => z.Name.Contains(stag))))); 

searchTags應該包含所有的標籤來搜索。無需使用循環。