C# 无关实体
我有一个通知列表C# 无关实体,c#,asp.net-mvc,entity-framework,viewmodel,C#,Asp.net Mvc,Entity Framework,Viewmodel,我有一个通知列表 IList<notification> notifications = db.notification.ToList(); IList notifications=db.notification.ToList(); 每个通知都有一个与业务实体相关的业务id,但没有FK关系 我需要显示通知以及每个 通知1业务a 通知2业务a 通知3业务a 通知4业务b 通知5业务c 我对viewmodel做了类似的操作 public person person {get; s
IList<notification> notifications = db.notification.ToList();
IList notifications=db.notification.ToList();
每个通知都有一个与业务实体相关的业务id,但没有FK关系
我需要显示通知以及每个
- 通知1业务a
- 通知2业务a
- 通知3业务a
- 通知4业务b
- 通知5业务c
public person person {get; set;}
public IList<notification> notifications {get; set;}
公众人物{get;set;}
公共IList通知{get;set;}
但是我能够在viewmodel中填充通知,因为我有一个个人id,我可以用它抓取具有该个人id的通知
在这种情况下,我没有一个notificationid来抓取业务,因为它是一个通知列表
IList<notification> notifications = db.notification.ToList();
有什么想法吗?您可以加入两个列表。我在linqpad的飞行中一起抓取了这个。它很可能不代表您的模型1到1,因此您需要调整它。因为您有一个通知列表,所以我假设您也有一个业务列表,并创建了一个类似的模型。最重要的部分是:
//nList = List of Notifications | bList = List of businesses
var JoinedBusiness = from not in nList
join busi in bList
on not.BusinessId equals busi.Id
select new { Notification = not.Name, Business = busi.Name };
如果需要强类型实体而不是匿名对象,则可能需要从中创建ViewModel
以下是完整的代码,您可以复制它(只需将其粘贴到linqpad中):
更改查询以返回新的ViewModel:
var JoinedBusiness = from not in nList
join busi in bList
on not.BusinessId equals busi.Id
select new BusiNotVM
{
Businesss = busi,
Notifications = not
};
这将为您提供以下输出:
每条水平线表示连接的实体;读:ID匹配。只需在视图中使用model.Business.Name
或model.Notifications.Name
请记住,还要更改视图期望的viewmodel模型:
@model Namespace.Folder.BusiNotVM
-玩得开心
我将如何在我的视图中提供此功能?它是匿名类型,如果可能的话,我希望它是强类型的。
var JoinedBusiness = from not in nList
join busi in bList
on not.BusinessId equals busi.Id
select new BusiNotVM
{
Businesss = busi,
Notifications = not
};