用哈希比较对象列表中不区分大小写的字符串

时间:2019-04-03 14:08:26

标签: c# linq

我有一个这样的字符串列表:

    List<string> excelList = new List<string>();
    excelList.Add("ZArA");  excelList.Add("CalviN"); excelList.Add("BaD ZAra");

然后我像这样从中创建一个Hashset

var hashet = new HashSet<string>(excelList,StringComparer.OrdinalIgnoreCase);

然后我有一个objects的{​​{1}}的列表,像这样:

class

好吧,现在我要确保 excelList 中的字符串值 ALL 在我的public class MyDbObjects { public string FirstName { get; set; } public string LastName { get; set; } public int ID { get; set; } } List<MyDbObjects> dbObjectses = new List<MyDbObjects>(); // call .add here to add some actual objects to it. 的班级对象列表中以名字或姓氏存在,并且不区分大小写。 我下面的代码可以但是起作用,不能可以处理区分大小写。我该如何添加呢?

dbObjectses

2 个答案:

答案 0 :(得分:2)

这应该做到:

var hasAll = !excelList.Except(
                dbObjectses.Select(x => x.FirstName).Concat(
                dbObjectses.Select(x => x.LastName)), 
              StringComparer.OrdinalIgnoreCase).Any();

Except在内部使用哈希表,因此应具有良好的性能。

答案 1 :(得分:1)

hastset的instrad,使用excelList,

var allofThemExist = dbObjectses.All(x => excelList.Contains(x.FirstName) || excelList.Contains(x.LastName));