Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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语句搜索多个集合_C#_Linq - Fatal编程技术网

C# 如何使用一条linq语句搜索多个集合

C# 如何使用一条linq语句搜索多个集合,c#,linq,C#,Linq,考虑三个不同的字符串列表,其中一个是列表列表列表。我需要把它们都搜索一遍,找到一个特别的 在这个示例中,实现了结果,但我想在一个Linq语句中实现它。请注意,我不想更改现有集合,也不想创建任何新集合 var collectionA = new List<string>() {"Item1", "Item2"}; var collectionB = new List<string>() { "Item3", "Item4" };

考虑三个不同的字符串列表,其中一个是列表列表列表。我需要把它们都搜索一遍,找到一个特别的

在这个示例中,实现了结果,但我想在一个Linq语句中实现它。请注意,我不想更改现有集合,也不想创建任何新集合

        var collectionA = new List<string>() {"Item1", "Item2"};
        var collectionB = new List<string>() { "Item3", "Item4" };
        var listOfLists = new List<List<string>>() {new List<string>() {"Item5", "Item6"}, new List<string>(){ "Item7", "Item8"}};

        //Is there a better Linq way to do this?
        var searchString = "Item5";
        var item = collectionA.FirstOrDefault(i => i == searchString);
        if (item == null)
        {
            item = collectionB.FirstOrDefault(i => i == searchString);
            if (item == null)
            {
                foreach (var listOfList in listOfLists)
                {
                    item = listOfList.FirstOrDefault(i => i == searchString);
                    if (item != null)
                    {
                        break;
                    }
                }
            }
        }
var collectionA=newlist(){“Item1”、“Item2”};
var collectionB=newlist(){“Item3”,“Item4”};
var listOfLists=new List(){new List(){“Item5”、“Item6”},new List(){“Item7”、“Item8”};
//有没有更好的Linq方法?
var searchString=“Item5”;
var item=collectionA.FirstOrDefault(i=>i==searchString);
如果(项==null)
{
item=collectionB.FirstOrDefault(i=>i==searchString);
如果(项==null)
{
foreach(listOfList中的var listOfList)
{
item=listOfList.FirstOrDefault(i=>i==searchString);
如果(项!=null)
{
打破
}
}
}
}
您可以使用展开列表列表,首先将
collectionA
collectionA
添加到
列表

 listOfLists.AddRange(new[] {collectionA, collectionB});

 if (listOfLists.SelectMany(x => x).Any(y => y == "Item5"))
 {
 }
使用不希望更改现有集合或创建新集合的新编辑,您可以执行以下操作:

 if (listOfLists.Any(x => x.Any(y => y == "Item5"))
     || collectionA.Any(x => x == "Item5")
     || collectionB.Any(x => x == "Item5"))
 {
 }
您可以使用展开列表列表,首先将
collectionA
collectionA
添加到
listOfLists

 listOfLists.AddRange(new[] {collectionA, collectionB});

 if (listOfLists.SelectMany(x => x).Any(y => y == "Item5"))
 {
 }
使用不希望更改现有集合或创建新集合的新编辑,您可以执行以下操作:

 if (listOfLists.Any(x => x.Any(y => y == "Item5"))
     || collectionA.Any(x => x == "Item5")
     || collectionB.Any(x => x == "Item5"))
 {
 }
也许这会有帮助:

var collectionA = new List<string>() { "Item1", "Item2" };
var collectionB = new List<string>() { "Item3", "Item4" };
var listOfLists = new List<List<string>>() { new List<string>() { "Item5", "Item6" }, new    List<string>() { "Item7", "Item8" } };
var val = from y in (from x in listOfLists[0] select x) where y == "Item5" select y;
var collectionA=newlist(){“Item1”、“Item2”};
var collectionB=newlist(){“Item3”,“Item4”};
var listOfLists=new List(){new List(){“Item5”、“Item6”},new List(){“Item7”、“Item8”};
var val=from y in(从列表[0]中的x选择x),其中y==“Item5”选择y;
您可以修改更多内容以获得预期结果

这可能会有所帮助:

var collectionA = new List<string>() { "Item1", "Item2" };
var collectionB = new List<string>() { "Item3", "Item4" };
var listOfLists = new List<List<string>>() { new List<string>() { "Item5", "Item6" }, new    List<string>() { "Item7", "Item8" } };
var val = from y in (from x in listOfLists[0] select x) where y == "Item5" select y;
var collectionA=newlist(){“Item1”、“Item2”};
var collectionB=newlist(){“Item3”,“Item4”};
var listOfLists=new List(){new List(){“Item5”、“Item6”},new List(){“Item7”、“Item8”};
var val=from y in(从列表[0]中的x选择x),其中y==“Item5”选择y;

您可以修改更多内容以获得预期结果。

我实际上不想更改集合,也不想出于性能原因创建任何新集合。@GregHollywood:编辑了我的回答我实际上不想更改集合,也不想出于性能原因创建任何新集合。@GregHollywood:编辑了我的回答为什么是
bool
结果?你错过了listOfLists@GregHollywood:请注意,此答案还创建了一个新集合,这不是您所期望的。为什么会出现
bool
结果?你错过了listOfLists@GregHollywood:请注意,此答案还创建了一个新集合,它不是您所期望的。我不喜欢您的示例,
searchString
也是
found结果,如果它在集合中找到?这没有多大意义,结果应该是
bool
,这意味着
是否包含在
中。或者,您可以修改您的示例,使您拥有
某些对象的集合,它有一些
属性
,我们希望对该
属性
执行搜索。这会更有意义。为了简单起见,我用这种方式编写了示例。在任何情况下,您的答案都非常有效,只需对FirstOrDefault(而不是any)稍作更改即可。我不喜欢您的示例,
searchString
也是
found结果(如果在集合中找到)?这没有多大意义,结果应该是
bool
,这意味着
是否包含在
中。或者,您可以修改您的示例,使您拥有
某些对象的集合,它有一些
属性
,我们希望对该
属性
执行搜索。这会更有意义。为了简单起见,我用这种方式编写了示例。在任何情况下,您的答案都可以完美运行,只需对FirstOrDefault(而不是any)稍作更改。