我有一个strings
的列表,例如:myList
然后我还有一个对象列表,例如myDbObjectsList
该对象看起来像这样:
public class MyDbObjects
{
public string FirstName { get;set;}
public string LastName {get;set;}
public int ID {get;set;}
}
我想知道myList
(上面的第一个)中是否有两个成员,其中一个的值等于 FirstName ,另一个的值等于等于我myDbObjectsList
中同一对象上的姓氏 ?
我用一种明显的方法for-each
来解决了这个问题,并检查了它是否等于这个,是否等于那个,等等,但是我认为人们应该有一种更有效的方法比我想象的还要聪明?
答案 0 :(得分:3)
要加快搜索速度,您可以将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));