我有两个系列。通知集合和文档类型集合。我需要收集有关它们的信息,并根据某些内容添加额外的字段。但是,我不知道如何做到这一点。
我从Document types集合中获取文档类型ID和名称。我只从Notifications集合中获取文档类型ID。如果两者都有ID,则应该在返回时添加一个额外的字段,该字段的字符串值为"已订阅"。如果不是,则字符串值应为"取消订阅"。当然,我也可以使用bool值。
这是我到目前为止所得到的。
从通知中获取所需内容的代码:
var notifications = from n in repository.Get<Domain.Notification>()
where n.UserId == userID
select n.DocTypeId;
从文档类型中获取所需内容的代码:
(注意:如果我可以在这里进行加入,我宁愿这样做。)
var doctypes = from d in repository.Get<Domain.DocumentType>()
where d.SupplierID == SuppId
select new { d.Id, d.Name};
我还没有加入。我不知道如何在select new中添加一个字段,因为它一直给我错误。而且我不知道如何在Query语法中执行某种if-else语句。我知道我曾经在TSQL中这样做过,所以我希望它也可以在linq中实现。
我尝试过的代码,但感觉&#39;对我不对:
string temp = "unsubscribed";
bool temp2 = true;
var testing =
from d in repository.Get<Domain.DocumentType>()
where d.SupplierID == SuppId
select new { d.Id, d.Name, temp, temp2 = false };
所以在这里我尝试了一些东西来添加第三个字段。对我而言,我感觉有点脏,但如果没有其他选择,我会使用它。我现在需要的是如何添加if-else部分。我知道如何选择multiplefrom,但不知道如何做if-else部分。
修改
两个馆藏内有什么:
文件类型:
通知:
我希望作为输出:
每个对象有三个项目的列表,即:
答案 0 :(得分:1)
var notifications = from n in repository.Get<Domain.Notification>()
where n.UserId == userID
select n.DocTypeId;
var docTypes = repository.Get<Domain.DocumentType>().Where(d =>d.SupplierID == SuppId).Select(d =>new {
d.Id,
d.Name,
hasEntryInNotifications=notifications.Any(n => n ==d.Id)
})