为了账号安全,请及时绑定邮箱和手机立即绑定

在对象列表中查找第一个匹配的字符串值

在对象列表中查找第一个匹配的字符串值

C#
忽然笑 2022-11-22 16:42:18

我有一个列表,strings例如:myList 然后我还有一个对象列表,例如myDbObjectsList 对象看起来像这样:


public class MyDbObjects

{  

    public string FirstName { get;set;}

    public string LastName {get;set;}

    public int ID {get;set;}

}

我想知道是否有任何两个成员myList(上面的第一个),其中一个的值等于FirstName,另一个的值等于来自我的同一对象的LastName ?myDbObjectsList


我用一种显而易见的方式解决了这个问题,for-each通过它们并检查它是否等于这个,它是否等于那个等等,但我认为应该有比我聪明的人能想到的更有效的方法?


查看完整描述

1 回答

?
长风秋雁

TA贡献1515条经验 获得超7个赞

为了加快搜索速度,您可以将所有字符串放myList入哈希集中:

var hashSet = new HashSet<string>(myList);

现在检查myDbObjects您是否可以使用任何对象Any

var isAny = myDbObjects.Any(x => hashSet.Contains(x.FirstName) && hashSet.Contains(x.LastName));

如果你想让这些对象使用Where

var objectsThatMatch = myDbObjects
  .Where(x => hashSet.Contains(x.FirstName) && hashSet.Contains(x.LastName));


查看完整回答
反对 回复 6天前
  • 1 回答
  • 0 关注
  • 5 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信