C# 将导航属性与行连接
我尝试使用LINQ加入导航属性。 这是我的密码C# 将导航属性与行连接,c#,linq,dapper,C#,Linq,Dapper,我尝试使用LINQ加入导航属性。 这是我的密码 var activities = Using<GetActivitiesForUser>() .Execute(User.DisplayAs, User.MarketId); var contacts = Using<GetContactsForUser>() .Execute(User.DisplayAs, User.MarketId); var model =
var activities = Using<GetActivitiesForUser>()
.Execute(User.DisplayAs, User.MarketId);
var contacts = Using<GetContactsForUser>()
.Execute(User.DisplayAs, User.MarketId);
var model = from activity in activities
join contact in contacts
on activity.ContactId equals contact.ContactId
select activity;
但是我想通过一个连接来实现这一点。看起来您正在使用实体框架 试一试
查询结果中必须同时包含活动和联系人:
来自活动中的活动
在联系人中加入联系人
在activity.ContactId上等于contact.ContactId
选择新建{活动,联系人};
或者选择两个对象的各个特性
在评论后编辑:
您将无法让整洁填充activity.contact,这是刻意保持简单的。您可以做的是在结果中循环并自己设置属性:
foreach(模型中的var anon)
{
anon.activity.contact=anon.contact;
}
其中model是查询.ToList()
另一种有效但丑陋的方式可能是:
model.Select(x=>{x.activity.contact=x.contact;return activity;}).ToList();
它会立即返回修改后的活动。这很难看,因为它滥用了一个旨在成为无状态的方法(
Select
),但是是的…您希望查询的结果是什么?这个使用方法中有什么?使用方法用于调用我的服务层以获取数据。这是一个自定义方法,与我想做的连接无关。对不起,我使用dapper,所以延迟加载不是一个选项。没有帮助。我需要做活动。联系人=联系人
foreach(var activity in activities)
{
activity = from contact in contacts
where contact.ContactId=activity.ContactId
select contact
}
var model = activities.Include("Contact");