none
我有两个linq查询的结果怎么把他们合并在一起呢?字段都一样 RRS feed

  • 问题

  •  using (DataClassesDataContext myData = new DataClassesDataContext())
                {
                    var allSearch1 = from comcas in myData.CASInfo
                                    where comcas.中文1.Contains(qname)
                               orderby comcas.中文别名.Length descending
                                    select comcas;
                    var allSearch2 = from comcas2 in myData.CASInfo
                                    where comcas2.中文2.Contains(qname)
                                   orderby comcas2.中文别名.Length descending
                                    select comcas2;

    // 怎么把allSearch1 和allSearch2 合并到 linq的allSearch中,顺序是先allSearch1的后allSearch2的
    //allSearch=allSearch1+allSearch2; 这个意思

                }

     var allSearch = allSearch1.Union(allSearch2);

    如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。
    如果语句中包含 UNION 运算符,那么 ORDER BY 子句中的项就必须出现在选择列表中。


    怎么办?请大家指教

    2009年11月16日 7:58

答案

  •       DataClasses1DataContext da = new DataClasses1DataContext();
                var l1 = (from s in da.linqname
                          orderby s.names.Length descending
                          select s).ToList();
                var l2 = (from s in da.linqname
                         orderby s.names.Length descending
                         select s).ToList();
              var ll=  l1.Concat(l2);

                foreach (var l in ll)
                {
                    Console.Write(l.names+"\n");
                }

     

    • 已标记为答案 wanguan2000 2009年11月16日 11:47
    2009年11月16日 10:37

全部回复

  • var allSearch3 = allSearch1.ToList().AddRange(allSearch2.ToList())?
    2009年11月16日 8:26
  • 报错了:无法将“void”赋值给隐式类型的局部变量
    怎么办?
    2009年11月16日 10:14
  • 能否详细点:最后的数据希望可以直接:
     List allSearch = allSearch1.ToList().AddRange(allSearch2.ToList());
    报错了:无法将“void”赋值给隐式类型的局部变量
    怎么办?



     GridView1.DataSource = allSearch;
                    GridView1.DataBind();
    2009年11月16日 10:34
  •       DataClasses1DataContext da = new DataClasses1DataContext();
                var l1 = (from s in da.linqname
                          orderby s.names.Length descending
                          select s).ToList();
                var l2 = (from s in da.linqname
                         orderby s.names.Length descending
                         select s).ToList();
              var ll=  l1.Concat(l2);

                foreach (var l in ll)
                {
                    Console.Write(l.names+"\n");
                }

     

    • 已标记为答案 wanguan2000 2009年11月16日 11:47
    2009年11月16日 10:37
  • 十分感谢:)再次感谢
    2009年11月16日 11:48