LINQ to SQL 加入 orderby

LINQ to SQL Join orderby

我是LINQ的新手,刚加入,所以如果我问错了请原谅我。 我有两张桌子

表 1

id   name    date
1    Mike    20-10-15
2    John    21-10-15
3    Sam     23-10-15

表2

id   name   date
1    Ashle  19-10-15
2    Lily   21-10-15
3    Jeni   22-10-15
4    April  23-10-15

我需要使用 Joins 的 5 条记录,并且应该按日期排序,最近的记录。

你们能帮帮我吗,我真的需要弄清楚 Joins 如何与 orderby 一起工作。 谢谢

编辑: 它们是两个不同的表,所以没有外键,所以我想我不能使用 Join,到目前为止我所做的是这样的

var combinddata = (from t1 in db.Table1
                        select t1.id)
                            .Concat(from t2 in db.Table2
                                    select t2.id);

我不知道如何只获取 5 条记录如何比较基于 DateTime 的两个表中的记录。

输出应该是

  1. 山姆
  2. 4 月
  3. 珍妮
  4. 约翰
  5. 莉莉
var query = 
    from Table1 in table1
    join Table2 in table2 on table1.id equals table2.id 
    orderby table1.date ascending 
    select table1.date;

试试这个方法

var combinddata = (from t1 in db.Table1
                        select t1.Name)
                            .Concat(from t2 in  db.Table2 
                                    select t2.Name).OrderByDescending(x => x.date).Take(5);

您可以连接来自不同表的相同匿名类型。如果你也 select 日期,你可以按它们降序排列,并取前 5 条记录:

Table1.Select (t1 => 
    new
    {
        Id = t1.Id,
        Name = t1.Name,
        Date = t1.Date
    }
).Concat(
Table2.Select (t2 => 
    new
    {
        Id = t2.Id,
        Name = t2.Name,
        Date = t2.Date
    }
))
.OrderByDescending (x => x.Date).Take(5)

请注意,这会优先考虑 Table1 中的项目。如果串联结果中的项目 5 和 6 在同一日期,但分别来自 Table1Table2,您只能从 Table1.

获得项目

如果需要,您可以 select 仅显示此结果中的姓名,但我假设您的输出仅显示预期的记录顺序,而不是确切的预期结果。