標籤:
背景
在工作過程中在使用架構的時候,遇到寫Linq的判斷條件的時候,我代碼寫成"t=>t.x.Equals(model.Id)&t.y.Equals(model.Name)"類似這種的形式。但是結果程式報錯。然後我就寫了下面的代碼。
代碼1
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var persons = GetPersonList(); 6 var result = persons.Where(u => u.Age == 2 &u.Name=="B"); 7 foreach (var item in result) 8 { 9 Console.WriteLine(item.ToString());10 }11 Console.ReadKey();12 }13 14 private static List<Person> GetPersonList()15 {16 return new List<Person>17 {18 new Person {Name = "A", Age = 1},19 new Person {Name = "B", Age = 2},20 new Person {Name = "C", Age = 2}21 };22 }23 }24 25 public class Person26 {27 public string Name { get; set; }28 29 public int Age { get; set; }30 31 public override string ToString()32 {33 return string.Format("Name:{0},Age:{1}", Name, Age);34 }35 }
運行結果
代碼2
1 static void Main(string[] args) 2 { 3 var persons = GetPersonList(); 4 var result = persons.Where(u => u.Age == 2 &&u.Name=="B"); 5 foreach (var item in result) 6 { 7 Console.WriteLine(item.ToString()); 8 } 9 Console.ReadKey();10 }
在原來的&多加一個&,同樣程式也可以運行,得出的結果也是
疑問
在C#裡面的IEnumerable<T>擴充方法裡面位元運算符(&)與並運算子(&&)的作用是一樣的?
聊聊C#IEnumerable<T>擴充方法裡面的判斷運算式中的&與&&的區別?