C# 检查字符串列表中的任何项是否不在对象列表中
假设我有这个字符串列表,我正在使用它创建一个对象列表 我的字符串列表中有171项,而我的对象列表中有170项。所以有一个没有通过,但我需要弄清楚是哪一个 幸运的是,可以在每个对象的每个名称中找到所有字符串。这意味着,例如:C# 检查字符串列表中的任何项是否不在对象列表中,c#,list,C#,List,假设我有这个字符串列表,我正在使用它创建一个对象列表 我的字符串列表中有171项,而我的对象列表中有170项。所以有一个没有通过,但我需要弄清楚是哪一个 幸运的是,可以在每个对象的每个名称中找到所有字符串。这意味着,例如: string nameObjOne 将等于: public class myObj { public string myName {get;set;} } 那么,如何检查我的第一个列表中的所有字符串是否都位于对象列表中,以便我可以找出哪一个不在其中?您可以使用LI
string nameObjOne
将等于:
public class myObj
{
public string myName {get;set;}
}
那么,如何检查我的第一个列表中的所有字符串是否都位于对象列表中,以便我可以找出哪一个不在其中?您可以使用LINQ选择
列表中的项目,但列表中没有相应的项目:
var results = strings.Except(myObjects.Select(o => o.myName)).ToArray();
在这之后,您只需检查结果的长度
数组就可以确定是否存在这样的项
这是O(n+m)解决方案,因为除了实现之外,它使用HastSet
您可以使用LINQ选择列表中的项目,但是列表中没有相应的项目
var results = strings.Except(myObjects.Select(o => o.myName)).ToArray();
在这之后,您只需检查结果的长度
数组就可以确定是否存在这样的项
这是O(n+m)解决方案,因为除了实现之外,它使用HastSet
还需要对象,而不仅仅是字符串
很好,它工作得很好,给了我想要的项目。坏东西!谢谢。任何显示除
以外的使用
哈希集的参考资料?那太好了great@caerolus我相信真正的实现与Jon Skeet在他的eduLINQ系列中描述的非常相似:。这是最简单、最符合逻辑的解决方案。@caerolus:声明返回值是设置的差值。这意味着重复项将不被视为重要--{1,1,2}
相当于{1,2}
。还要注意的是,OPs还需要对象,而不仅仅是字符串
。很好,这非常有效,并为我提供了所需的项目。坏东西!谢谢。任何显示除
以外的使用
哈希集的参考资料?那太好了great@caerolus我相信真正的实现与Jon Skeet在他的eduLINQ系列中描述的非常相似:。这是最简单、最符合逻辑的解决方案。@caerolus:声明返回值是设置的差值。这意味着重复项将不被视为重要--{1,1,2}
相当于{1,2}
。