Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ将列表复制到不同的列表_C#_.net_Linq_Entity Framework 4 - Fatal编程技术网

C# 使用LINQ将列表复制到不同的列表

C# 使用LINQ将列表复制到不同的列表,c#,.net,linq,entity-framework-4,C#,.net,Linq,Entity Framework 4,我有一个来自数据库的实体,我想将数据复制到另一个具有以下字段的类中。给你 var list = mediaItems.Select(m => new MediaItemView { ImageUrl = m.ImageURL, LongDesc = m.LongDescription, Title = m.Title,

我有一个来自数据库的实体,我想将数据复制到另一个具有以下字段的
类中。给你

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
,后面紧跟第一个

Composer = m.MediaItemOriginators
            .Where(mo => mo.OriginatorType.OriginatorTypeId == 3)
            .Select(mo => m.Originator.Firstame)
            .DefaultIfEmpty("")
            .First()