我有兩個相同對象的列表,我想基於不區分大小寫的方式查找這些列表的聯合和交集對象屬性的比較。如何在linq中以不區分大小寫的方式比較字符串,它們是對象的屬性
爲簡單起見,我們將其稱爲Person
,並且我想過濾Person.Name
屬性。
這樣做的建議方法是什麼?我希望將代碼保存在Linq的一行中。
目前我做了以下內容:
public class Person { public string Name { get; set; } }
-
var people =
firstListOfPeople.Where(
p1 => p1.Name != null &&
secondListOfPeople
.Where(p2 => p2.Name != null)
.Select(p2 => p2.Name.ToUpper())
.Contains(p1.Name.ToUpper()));
看起來'Select.Contains'有點超過頂部;但否則代碼似乎是合理的。該代碼是否會導致問題? – BradleyDotNET 2014-11-05 00:06:48
對於等於 - http://stackoverflow.com/questions/3121957/how-can-i-do-a-case-insensitive-string-comparison,爲包含 - IndexOf:http://stackoverflow.com/questions/444798/case-insensitive-containsstring ...不能使兩者都重複:) – 2014-11-05 00:06:59
@BradleyDotNET不,代碼有效。只是希望更簡單一些(即使這意味着擴展Person類),如:'firstListOfPeople.Intersect(secondListOfPeople)' – 2014-11-05 00:08:57