使用linq查询将列表连接并选择到列表中

bpsygsoo  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(141)

我有三个像贝娄这样的模型:
文档{ GUID Id,int代码列表项,}
项目{ GUID Id,GUID DocumentId,string Name,List ExitHistories }
ExitHistory { Guid Id,Guid ItemId,DateTime ExitDateTime }
我想选择一个文档与一些id和连接的三个表,并选择结果.我写这样的东西,但我不能完成它,我可以有ExitHistories在项目.有人能帮助我吗?

var document1 = (
        from documents in context.Documents
        where documents.Id == request.Id
        join items in context.Items on documents.Id equals items.DocumentId into i
        select new 
        {
            Id = documents.Id,
            Code = documents.Code,
            Items = i
        }
    ).First();

当我选择文档时,我尝试在我的项目中包含我的exitHistories,但我不知道如何操作。

8hhllhi2

8hhllhi21#

假设你有一个context.ExitHistories,我相信下面的查询就是你要找的。你只需要在ExitHistories的集合上添加另一个join

var foundDocument = (
    from document in context.Documents
    where document.Id == request.Id
    join item in context.Items on document.Id equals item.DocumentId
    join exitHistory in context.ExitHistories on item.Id equals exitHistory.ItemId into exitHistories
    select new 
    {
        Id = document.Id,
        Code = document.Code,
        Items = exitHistories
    }
).First();

一个简单的演示:https://dotnetfiddle.net/sARzOf

相关问题