查找类型的列表是否包含在类型
问题描述:
名单的名单有一个LINQ的方式来找出是否,例如:查找类型的列表是否包含在类型
List<int> micro = new List<int>(){1,2,3,4,5};
处于
List<List<int>> macro = new List<List<int>>();
?
我可以做宏foreach
循环,并检查它是否包含至少一个List
具有所有微的项目(macro[0].Contains(1) && macro[0].Contains(2)...)
的,但有一个更C#的方式来做到这一点?
答
bool exists = macro.Any(x => micro.All(x.Contains));
如果订单和元素的数量是重要的用途SequenceEqual
bool exists = macro.Any(x => x.SequenceEqual(micro));
答
请尝试以下,其工作的罚款。
string listElems = string.Join(",",micro);
bool exists = macro.Any(x=>string.Join(",",x)==listElems);
希望这对你很好。 :) 快乐编码。
它的工作原理!太棒了。我会在几分钟内接受它。 – Tyress 2014-09-22 10:07:44
是的。请注意,这不会*意味着,'macro'包含确切的'micro'对象。它“只是”意味着'macro'包含一个'IEnumerable',它具有与'micro'相同的项目。另外,该'IEnumerable'可能有* more *项目比'micro'。 – Corak 2014-09-22 10:10:19
如果你正在寻找完全相同的列表实例,可以在'Any()'中使用'object.ReferenceEquals()'。 – 2014-09-22 10:11:20