2015-10-07 133 views
-3

这里描述2个表LINQ查询2个表按日期排序

评语表

ID   Comment Id  OrderDate            
---   ---------- -------------------- 
1   1    2003-10-13 08:00:00 
2   2    2003-10-12 10:00:00 
3   1    2003-10-10 12:00:00 

SHARE TABLE

ID   Share Id  OrderDate            
---   ---------- -------------------- 
1   1    2003-10-11 08:00:00 
2   2    2003-10-15 10:00:00 
2   2    2003-10-12 10:00:00 

现在的两个表我想获取列表日期智者。

单元输出将

ID  OrderDate            
--- ------------------- 
3  2003-10-10 12:00:00(Comment) 
1  2003-10-11 08:00:00(Share) 
3  2003-10-16 12:00:00(Comment) 

我们怎样才能生成Linq查询?

+0

可以显示一些代码你在想什么? – Davecz

+0

我在考虑将评论和分享的所有数据以及应用日期明智的顺序结合起来。但不知道如何将这些数据结合起来? 因为我想获取10个最高的数据仅降序排列日期 –

+0

请尝试先阅读:https://msdn.microsoft.com/en-us/library/bb397933.aspx – Davecz

回答

0
public class ShareEntry 
{ 
    public DateTime Date; 
    public int ID; 
    public int shareID; 
} 

public class CommentEntry 
{ 
    public DateTime Date; 
    public int ID; 
    public int commentID; 
} 

利用如上设置类,LINQ查询应该是这样的:

IEnumerable<ShareEntry> share = new List<ShareEntry>(); 
    IEnumerable<CommentEntry> comment = new List<CommentEntry>(); 
    var output = share 
     .Select(x => new 
    { 
     id = x.ID, 
     date = x.Date, 
     type = "share" 
    }) 
     .Concat(comment. 
      Select(x => new 
      { 
       id = x.ID, 
       date = x.Date, 
       type = "comment" 
      })) 
     .OrderByDescending(x => x.date).Take(10); 
0

按你的话,你可以试试下面的query

SELECT distinct id, orderdate FROM 
(
SELECT id, orderdate FROM `comment` 
UNION ALL 
SELECT id, orderdate FROM `share` 
) a 
ORDER BY a.orderdate DESC 
LIMIT 10; 
+0

感谢..它的工作原理。会将sql查询更改为linq –