LINQ到SQL连接顺序
本文关键字:顺序 连接 SQL LINQ | 更新日期: 2023-09-27 18:18:54
我是LINQ和join的新手,所以如果我问错了,请原谅我。我有两张表
Table1
id name date
1 Mike 20-10-15
2 John 21-10-15
3 Sam 23-10-15
表
id name date
1 Ashle 19-10-15
2 Lily 21-10-15
3 Jeni 22-10-15
4 April 23-10-15
我需要5条记录使用join,应该是orderbydate,最近的记录。
你们能帮我吗,我真的需要弄清楚join是如何与order一起工作的。由于
编辑:它们是两个不同的表,所以没有外键,所以我想我不能使用Join,所以到目前为止我所做的是这样的
var combinddata = (from t1 in db.Table1
select t1.id)
.Concat(from t2 in db.Table2
select t2.id);
我不知道如何只得到5条记录,如何比较DateTime基础上两个表的记录。
输出应为
- 山姆4月
- Jeni 约翰莉莉
可以连接来自不同表的相同匿名类型。如果还选择日期,则可以按日期降序排序,并取前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在连接的结果是在同一日期,但分别来自Table1
和Table2
,你只得到项目从Table1
。
如果您愿意,您可以只从该结果中选择名称,但我假设您的输出只显示预期的记录顺序,而不是确切的预期结果。
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);