C# 如何与多个IEnumerable相交?

C# 如何与多个IEnumerable相交?,c#,asp.net-mvc,linq,linq-to-sql,ienumerable,C#,Asp.net Mvc,Linq,Linq To Sql,Ienumerable,我不明白为什么我选择的变量不包含所有TempX变量的内容。例如,在我的例子中,变量TempX包含一个超对象,但一旦到达第一个相交点,它就会丢失,并且我的视图总是显示一个空列表 顺便说一下,bla.ToList()是真实而复杂的linq查询。我把这个写清楚了 谢谢,下面是代码: public ActionResult Search(string q) { ViewBag.q = q; String[] strQueries = q

我不明白为什么我选择的变量
不包含所有
TempX
变量的内容。例如,在我的例子中,变量
TempX
包含一个超对象,但一旦到达第一个相交点,它就会丢失,并且我的视图总是显示一个空列表

顺便说一下,bla.ToList()是真实而复杂的linq查询。我把这个写清楚了

谢谢,下面是代码:

 public ActionResult Search(string q)
        {
            ViewBag.q = q;

            String[] strQueries = q.Split(' ');

            IEnumerable<SuperObject> selected = new List<SuperObject>();

            foreach (string str in strQueries)
            {  
                //Query 1
                IEnumerable<SuperObject> Temp1 = blablabla.ToList();

                //Query 2
                IEnumerable<SuperObject> Temp2 = blablabla2.ToList();

                //Query 3
                IEnumerable<SuperObject> Temp3 = blablabla3.ToList();

                //Query 4
                IEnumerable<SuperObject> Temp4 = blablabla4.ToList();

                selected = selected.Intersect(Temp1);
                selected = selected.Intersect(Temp2);
                selected = selected.Intersect(Temp3);
                selected = selected.Intersect(Temp4);
            }

            return View("Search", selected);
        }
公共操作结果搜索(字符串q)
{
ViewBag.q=q;
字符串[]strquerys=q.Split(“”);
IEnumerable selected=新列表();
foreach(strquerys中的字符串str)
{  
//问题1
IEnumerable Temp1=bla.ToList();
//问题2
IEnumerable Temp2=bla2.ToList();
//问题3
IEnumerable Temp3=bla3.ToList();
//问题4
IEnumerable Temp4=bla4.ToList();
选定=选定。相交(Temp1);
选定=选定。相交(Temp2);
选定=选定。相交(Temp3);
选定=选定。相交(Temp4);
}
返回视图(“搜索”,选中);
}

您正在将一个空列表与临时1-4相交。这不会产生任何结果

编辑:为了详细说明,相交获取两个集合共有的所有元素。由于要相交的第一个集合为空,因此结果始终为空。所以答案取决于你想做什么。您是否试图只查找所有4个列表共有的元素?如果是这样,请按照BurundukXP所说的做:

selected = Temp1.Intersect(Temp2);
selected = selected.Intersect(Temp3);
selected = selected.Intersect(Temp4);
您是否试图获取每个列表中所有元素的唯一列表?这样做:

selected.AddRange(Temp1);
selected.AddRange(Temp2);
selected.AddRange(Temp3);
selected.AddRange(Temp4);
selected.Distinct();

您可能希望使用
联合
而不是
相交
。区别在于此,我认为这是不言而喻的:

您是否尝试过进入代码并查看每个交叉口的结果?