Linq Group在多个列上具有电位空值

The*_*heo 5 c# linq linq-to-entities group-by

我正在尝试使这项工作:

 var customerSearchResult = customers.GroupBy(                               
            x => new {
                x.CustomerID,
                x.email,
                x.CreatedOn,
                x.FirstName,
                x.LastName,
                x.Profile == null ? -1 : x.Profile.Value
            })
            .Select(csr => new CustomerSearchResult
            {
                CustomerID = csr.Key.CustomerID,
                Email = csr.Key.email,
                CreatedOn = csr.Key.CreatedOn

            });
Run Code Online (Sandbox Code Playgroud)

我得到了一个

错误CS0746无效的匿名类型成员声明符.必须使用成员分配,简单名称或成员访问声明匿名类型成员.

因为这行x.Profile == null ? -1 : x.Profile.Value Profile可以为null.

知道怎么做吗?

Mak*_*kin 6

Anonymous类中声明此变量的名称:

var customerSearchResult = customers.GroupBy(                               
            x => new {
                x.CustomerID,
                x.email,
                x.CreatedOn,
                x.FirstName,
                x.LastName,
                Profile = x.Profile == null ? -1 : x.Profile.Value
            })
            .Select(csr => new CustomerSearchResult
            {
                CustomerID = csr.Key.CustomerID,
                Email = csr.Key.email,
                CreatedOn = csr.Key.CreatedOn
            });
Run Code Online (Sandbox Code Playgroud)

正如@ Abion47在评论中提到的,您可以简化您的协助:

Profile = x.Profile?.Value ?? -1
Run Code Online (Sandbox Code Playgroud)