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

我有一个列表,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通过它们并检查它是否等于这个,它是否等于那个等等,但我认为应该有比我聪明的人能想到的更有效的方法?


忽然笑
浏览 71回答 1
1回答

长风秋雁

为了加快搜索速度,您可以将所有字符串放myList入哈希集中:var&nbsp;hashSet&nbsp;=&nbsp;new&nbsp;HashSet<string>(myList);现在检查myDbObjects您是否可以使用任何对象Any:var&nbsp;isAny&nbsp;=&nbsp;myDbObjects.Any(x&nbsp;=>&nbsp;hashSet.Contains(x.FirstName)&nbsp;&&&nbsp;hashSet.Contains(x.LastName));如果你想让这些对象使用Wherevar&nbsp;objectsThatMatch&nbsp;=&nbsp;myDbObjects &nbsp;&nbsp;.Where(x&nbsp;=>&nbsp;hashSet.Contains(x.FirstName)&nbsp;&&&nbsp;hashSet.Contains(x.LastName));
打开App,查看更多内容
随时随地看视频慕课网APP