Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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
带join和groupby的c#lambda_C#_Join_Lambda_Group By_Type Conversion - Fatal编程技术网

带join和groupby的c#lambda

带join和groupby的c#lambda,c#,join,lambda,group-by,type-conversion,C#,Join,Lambda,Group By,Type Conversion,我有一个lambda表达式,它实际上是有效的 var d = DateTime.Now.AddDays(-30); return db.Orders .Where(o => o.CreateDate > d) .Join(db.OrderItems, o => o.OrderId, o => o.OrderId, (o, p) => new { Order = o, OrderItem = p }) .Join(db.Customers, o => o.Or

我有一个lambda表达式,它实际上是有效的

 var d = DateTime.Now.AddDays(-30);
return db.Orders
.Where(o => o.CreateDate > d)
.Join(db.OrderItems, o => o.OrderId, o => o.OrderId, (o, p) => new { Order = o, OrderItem = p })
.Join(db.Customers, o => o.Order.CustomerId, o => o.CustomerId, (o, p) => new { o.Order, o.OrderItem, Customer = p })
.Where(o => o.Order.Status > 3)
.GroupBy(o => o.Customer.CustomerId)
.Select(o => new CustomerMonthSale
{
CustomerId = o.Key,
Price = o.Sum(p => p.OrderItem.Price * p.OrderItem.Quantity),
//Name = o.Select(p => p.Customer.Name)
})
.OrderByDescending(o => o.Price)
.Take(10).ToList();
但我对这句话有意见。我收到错误消息:

无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“string”


为什么??如何修复此问题?

这是因为您正在选择一个集合,而
Name
正在导出单个字符串。
试试这个:

Name = o.Select(p => p.Customer.Name).FirstOrDefault()
因为在
之后。选择(…)
您总是会得到一个集合(
IEnumerable
),通过调用
FirstOrDefault()
您会得到该集合中的第一项