我是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
我需要使用连接的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基础上两个表的记录。
输出
答案 0 :(得分:1)
您可以连接不同表中的相同匿名类型。如果您还选择了日期,则可以按降序排序,并按前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
获取该项目。
如果需要,您只能从此结果中选择名称,但我假设您的输出仅显示预期的记录顺序,而不是预期的确切结果。
答案 1 :(得分:0)
试试这种方式
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);
答案 2 :(得分:-1)
var query =
from Table1 in table1
join Table2 in table2 on table1.id equals table2.id
orderby table1.date ascending
select table1.date;