我有两个列表,一个是另一个列表。
List 1: A, B, C, D, E
List 2: B, D, E
我想最终得到一个超集的集合,其中包含标记的子集中包含的项目。这似乎是LINQ可以做的事情,但我不确定语法。
Result: A, false
B, true
C, false
D, true
E, true
答案 0 :(得分:3)
var list1 = new string[]{ "A", "B", "C", "D", "E" };
var list2 = new string[]{ "B", "D", "E" };
var result =
from a in list1
select new { Value = a, Has = list2.Contains( a ) };
foreach(var item in result ) {
Console.WriteLine(string.Format("{0}, {1}", item.Value, item.Has);
}
答案 1 :(得分:3)
var list1 = new string[] {"A", "B", "C", "D", "E"};
var list2 = new string[] { "B", "D", "E"};
var query = from item1 in list1
join item2 in list2 on item1 equals item2 into g
select new { Name = item1, IsFound = g.Count() > 0};
答案 2 :(得分:1)
HashSet<char> subset = new HashSet<char>(list2)
var query = list1
.Select(x => new
{
value = x,
subsetHas = subset.Contains(x) }
);
答案 3 :(得分:0)
var list1 = new[] { "A", "B", "C", "D", "E" };
var list2 = new[] { "B", "D", "E" };
var result =
list1.Intersect(list2)
.Select(el => new { el, true })
.Union(list1.Except(list2)
.Select(el => new { el, false }));