LinQ查询问题

时间:2011-08-02 18:58:46

标签: linq

var icerikler1 = (from x in data.Tbl_Iceriklers
                  where x.ust_kategori_id == 96
                  select x).OrderByDescending(a => a.ID).Take(4); 

我已经提取了最后4个内容,然后连接到转发器。我在这里没有问题。但是,我想成为 前两个记录中的ust_kategori_id == 96。 最后,我希望成为另外两个记录的ust_kategori_id == 95。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

你的意思是UNION吗?

var icerikler1 = (from icerik in data.Tbl_Iceriklers
              where icerik.ust_kategori_id == 96
              select icerik).OrderByDescending(a => a.ID).Take(2).Union((from icerik in data.Tbl_Iceriklers
              where icerik.ust_kategori_id == 95
              select icerik).OrderByDescending(a => a.ID).Take(2)); 

答案 1 :(得分:0)

您可以按ust_kategori_id进行分组,过滤掉除9596之外的任何群组,然后按照您指定的顺序选择每个群组中的2个:

var icerikler1 = data.Tbl_Iceriklers
                     .GroupBy( x=> x.ust_kategori_id)
                     .Where( g=> g.Key == 95 || g.Key == 96)
                     .SelectMany( g=> g.OrderByDescending(a => a.ID).Take(2));