2009-11-17 63 views
41

我有一個簡單的lambda表達式即是這樣的:多凡LAMBDA條款表達式

x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty) 

現在,如果我想補充一個where子句來表達,比如,l.InternalName != String.Empty那麼會是什麼表情是?

+1

這是有點偏離主題,但字符串類有一個方法String.IsNullOrEmpty,您可以使用,而不是比較它與String.Empty – 2009-11-17 13:45:17

回答

87

可以是

x => x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != String.Empty && l.InternalName != String.Empty) 

x => x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != String.Empty) 
    .Where(l => l.InternalName != String.Empty) 

當你正在尋找在Where實現,你可以看到它接受Func(T, bool);這意味着:

  • T是您的IEnumerable的類型
  • bool意味着它需要返回一個布爾值

所以,當你做

.Where(l => l.InternalName != String.Empty) 
// ^     ^---------- boolean part 
//  |------------------------------ "T" part 
+6

+1布爾/ T註釋 – 2009-11-17 13:44:03

2
x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty).Where(l => l.Internal NAme != String.Empty) 

x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty && l.Internal NAme != String.Empty) 
3

也許

x=> x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != string.Empty) 
    .Where(l => l.InternalName != string.Empty) 

你或許可以也把它在相同的where子句:

x=> x.Lists.Include(l => l.Title) 
    .Where(l => l.Title != string.Empty && l.InternalName != string.Empty) 
5

你可以將其包含在同一個地方與& &操作語句...

x=> x.Lists.Include(l => l.Title).Where(l=>l.Title != String.Empty 
    && l.InternalName != String.Empty) 

您可以使用任何比較運算符(認爲它像做if語句),例如...

List<Int32> nums = new List<int>(); 

nums.Add(3); 
nums.Add(10); 
nums.Add(5); 

var results = nums.Where(x => x == 3 || x == 10); 

...將帶回3和10

11

傳遞給Where可以包括任何正常的C#代碼拉姆達,例如&&操作:

.Where(l => l.Title != string.Empty && l.InternalName != string.Empty)