gpt4 book ai didi

c# - 使用 LINQ-to-SQL 合并两个表的内容

转载 作者:行者123 更新时间:2023-11-30 18:43:51 28 4
gpt4 key购买 nike

我的数据库中有两个表

Table:Documents
Id (int), DocName (nvarchar)
----------------------------

Table:AccessLogs
Id (int), DocId (int), AccessTime (DateTime)
----------------------------

我如何编写一个 LINQ 查询来返回最近 10 个访问的文档并填写 accesslogs 表中的访问时间?我修改了 C# 中的文档类以具有 AccessTime (DateTime) 属性。 LINQ 查询的结果应为列表类型。

(我的解决方案运行了 10 个查询,必须有更有效的方法)

最佳答案

这应该有效:

var lastTen = (
from doc in Documents
join log in AccessLogs on doc.Id equals log.DocId
order by log.AccessTime desc
select doc
).Take(10).Reverse().ToList();

编辑 - 然后使用以下内容:

var lastTen = (
from doc in Documents
join log in AccessLogs on doc.Id equals log.DocId
order by log.AccessTime desc
select new {
DocId = doc.Id,
DocName = doc.DocName,
LogId = Log.Id,
AccessTime = log.AccessTime
}
).Take(10).Reverse().ToList();

编辑2

假设在 DBML 中存在建模的关系,那么您也可以只选择最后十个日志条目,然后通过自动生成的 .Document 属性访问相关文档。

关于您的评论:上面的语句不能返回此错误,因为没有构造新的 Document,而是构造了一个包含必要值的匿名类型。

关于c# - 使用 LINQ-to-SQL 合并两个表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3711643/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com