我想使用lambda进行连接查询 这是我的疑问:

        var query = db.SampleSeries.GroupJoin(db.Projects, seri => seri.projectId, prjct => prjct.projectId,
            (seri, prjct) => new ListSeriesProjectViewModel()
            {
                nameProject = prjct.ownerA,
                address = prjct.address,
                seriesId = seri.seriesId,
                seriesId = seri.getDate
            }).ToList();

但我有个错误

名称项目=prjct.ownerA 地址=prjct.Address

事实上并不认可项目的领域. 你能帮帮我吗?

这个查询有什么问题?

推荐答案

在结果 Select 器中,您直接从prjct访问属性,这是不正确的,因为使用GroupJoin时,prjct实际上是匹配记录的IEnumerable.您可能需要对其使用一些聚合函数或其他操作.

您的结果对象初始值设定项中有重复的属性(SeriesID).

以下是更正,假设您只需要每个系列的第一个或默认项目匹配:

var query = db.SampleSeries.GroupJoin(db.Projects,
                                  seri => seri.projectId, 
                                  prjct => prjct.projectId,
        (seri, prjctCollection) => new 
        {
            seri = seri,
            prjct = prjctCollection.FirstOrDefault() // assuming you want just one project per series
        })
        .Select(result => new ListSeriesProjectViewModel()
        {
            nameProject = result.prjct?.ownerA,
            address = result.prjct?.address,
            seriesId = result.seri.seriesId,
            getDate = result.seri.getDate // assuming getDate is a property of seri and you want to keep it in the ViewModel
        }).ToList();

Csharp相关问答推荐

ASP.NET Core -如何解决Fluent验证中无法访问的扩展方法Message Formatter错误

如何将ref T*重新解释为ref nint?

在Dapper中使用IasyncEum重写GetAsyncEum方法

将现有字段映射到EFCore中的复杂类型

调用Task.Run()与DoSomethingAsync()有什么不同?

在C#中反序列化/序列化具有混合元素顺序的XML时出现问题

具有以接口为其类型的属性的接口;类指定接口的实现,但无效

带有可选参数的模拟方法返回意外的不同值,具体取决于可选的默认值

在使用StringBuilder时,如何根据 colored颜色 设置为richTextBox中的特定行着色?

未显示详细信息的弹出对话框

工厂类是如何在.NET 8中注册的?

删除MudRadio时,MudRadioGroup未 Select 正确的MudRadio

如何在.NET Core 8中自定义标识用户模型

如何从原始图像到新创建的图像获得相同的特定 colored颜色 ,并且具有相同的 colored颜色 量和相同的宽度和高度?

如何读取TagHelper属性的文本值?

将列表转换为带有逗号分隔字符串形式的值的字典

避免在特定区域中设置Visual Studio代码的自动格式

如何对正方形格线进行对角分组

无法将.Net Framework 4.8.1升级到.Net 7

我如何为我的Blazor应用程序构建一个动态教程标注?