如何交叉多个IEnumerable?

Jea*_*ôté 3 c# linq asp.net-mvc ienumerable linq-to-sql

我不明白为什么我的变量selected不包含所有TempX变量的内容.例如,在我的情况下,变量包含TempX一个SuperObject,但是当我到达第一个相交时,它就丢失了,我的View总是显示一个空列表......

顺便说一下,blablabla.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);
        }
Run Code Online (Sandbox Code Playgroud)

Dzi*_*nny 10

您可能想要使用Union而不是Intersect.这是区别,我认为它是自我解释的: 联盟,交集,差异比较.