我有两个系列。Notifications 集合和 Document 类型集合。我需要收集有关它们的信息,并根据某些内容添加一个额外的字段。但是,我不知道如何做到这一点。
我从文档类型集合中获取文档类型 ID 和名称。而且我只从 Notifications 集合中获得了一个文档类型 ID。如果两者都存在 ID,则应在返回值中添加一个额外字段,该字段是简单的“已订阅”字符串值。如果不是,则字符串值应为“Unsubscribed”。当然,我也可以使用 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 中,因为这样做时它一直给我错误。而且我不知道如何在查询语法中执行某种 if-else 语句。我知道我曾经在 TSQL 中这样做过,所以我希望在 linq 中也可以。
我尝试过但对我来说“感觉”不对的代码:
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 select,但不知道如何做if-else部分。
编辑
两个集合里面有什么:
文件类型:
- ID
- 姓名
- 供应商 ID
- 其他无关的东西
通知:
- ID
- 文档类型ID
- 用户身份
- 其他无关的东西
我想要的输出:
每个对象包含三个项目的列表,即:
- 文档类型 ID
- 文档类型名称
- 布尔值(如果通知集合中存在文档类型 ID,则为 true,否则为 false)