使用LINQ复制列表到不同的列表
本文关键字:列表 复制 使用 LINQ | 更新日期: 2023-09-27 18:10:21
我有一个来自数据库的实体,我想将数据复制到具有以下字段的另一个class
。在这里
var list = mediaItems.Select(m => new MediaItemView
{
ImageUrl = m.ImageURL,
LongDesc = m.LongDescription,
Title = m.Title,
Price = m.PriceNoVAT,
Composer = m.MediaItemOriginators.Where(mo => mo.OriginatorType.OriginatorTypeId == 3).FirstOrDefault().Originator.Firstname,
Arranger = m.MediaItemOriginators.Where(mo => mo.OriginatorType.OriginatorTypeId == 2).FirstOrDefault().Originator.Firstname,
});
问题:当Composer = m.MediaItemOriginators.Where(mo => mo.OriginatorType.OriginatorTypeId == 3).FirstOrDefault()
是空我得到异常(这是正常的),但我想有作曲家,如果有任何或如果没有-一个空字符串。如何实现这一点有什么想法吗?
我将更改为使用Select
子句在FirstOrDefault
或默认调用之前选择名称,然后使用空合并操作符:
Composer = m.MediaItemOriginators
.Where(mo => mo.OriginatorType.OriginatorTypeId == 3)
.Select(mo => m.Originator.Firstame)
.FirstOrDefault() ?? ""
(当然,这是假设m.Originator
在匹配条目时永远不会为空。)
或者你可以使用DefaultIfEmpty
和First
:
Composer = m.MediaItemOriginators
.Where(mo => mo.OriginatorType.OriginatorTypeId == 3)
.Select(mo => m.Originator.Firstame)
.DefaultIfEmpty("")
.First()