Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ-输出真/假“;检查表;清单B中包含的清单A中的项目数量_C#_Linq_List - Fatal编程技术网

C# LINQ-输出真/假“;检查表;清单B中包含的清单A中的项目数量

C# LINQ-输出真/假“;检查表;清单B中包含的清单A中的项目数量,c#,linq,list,C#,Linq,List,我有两份清单: List<string> list1 = new List<string>(){ "a", "b", "c", "d" }; List<string> list2 = new List<string>(){ "b", "d", "e" }; 我该怎么做呢 提前感谢,, Wavy这就是所需的全部: list1.Select(str => list2.Contains(str)).ToList(); 仅此而已: list1

我有两份清单:

List<string> list1 = new List<string>(){ "a", "b", "c", "d"  };

List<string> list2 = new List<string>(){ "b", "d", "e" };
我该怎么做呢

提前感谢,, Wavy

这就是所需的全部:

list1.Select(str => list2.Contains(str)).ToList();
仅此而已:

list1.Select(str => list2.Contains(str)).ToList();

@Balazs的回答是正确的,但您应该知道列表中的
包含
操作是O(n)操作。若列表相当大,那个么创建新列表将是O(n*m)操作,这可能会非常慢。若要检查某个值是否在其他值中,最好的方法是使用一些基于哈希的结构,该结构具有O(1)for
Contains
操作。所以,只需将第二个列表值放入HashSet

var hashSet = new HashSet<string>(list2);
var result = list1.Select(hashSet.Contains).ToList();
var hashSet=新hashSet(列表2);
var result=list1.Select(hashSet.Contains.ToList();

@Balazs的答案是正确的,但您应该知道
包含的操作列表上的操作是O(n)操作。若列表相当大,那个么创建新列表将是O(n*m)操作,这可能会非常慢。若要检查某个值是否在其他值中,最好的方法是使用一些基于哈希的结构,该结构具有O(1)for
Contains
操作。所以,只需将第二个列表值放入HashSet

var hashSet = new HashSet<string>(list2);
var result = list1.Select(hashSet.Contains).ToList();
var hashSet=新hashSet(列表2);
var result=list1.Select(hashSet.Contains.ToList();