将对象列表中不区分大小写的字符串与哈希进行比较



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

    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);

然后我有一个这样的class objects列表:

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.

好的,现在我想确保 excelList 中的所有字符串值存在于我的类对象列表中,dbObjectses为名字或姓氏,并且不关心区分大小写。我下面的代码有效,但它处理区分大小写。我如何将其添加到其中?

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

这应该可以做到:

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

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

instrad of hasset,请使用 excelList,

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

最新更新