我有两个相同对象的列表,我想基于不区分大小写的方式查找这些列表的联合和交集对象属性的比较。如何在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