C# 如何在linq c中分组和选择多个对象

C# 如何在linq c中分组和选择多个对象,c#,linq,C#,Linq,我有这个linq语句,我得到这个错误: 无法隐式转换类型 System.Collection.Generic.Ienumerable到“字符串” 可以这样选择person对象的多个属性吗 您的代码: PersonList = PersonList .GroupBy(s => s.LastName) .Select(g => new Person { LastName = g.Key,

我有这个linq语句,我得到这个错误:

无法隐式转换类型 System.Collection.Generic.Ienumerable到“字符串”

可以这样选择person对象的多个属性吗

您的代码:

PersonList = PersonList
           .GroupBy(s => s.LastName)
           .Select(g => new Person { 
                LastName = g.Key,
                Period = g.Select(p => p.Period), 
                Time = string.Join("  ", g.Select(v => CheckTime(v.Time, v.Period) + "' " + v.Gtype)) })
           .ToList();
修改代码:

Period = g.Select(p => p.Period)
这样修改

您的代码:

PersonList = PersonList
           .GroupBy(s => s.LastName)
           .Select(g => new Person { 
                LastName = g.Key,
                Period = g.Select(p => p.Period), 
                Time = string.Join("  ", g.Select(v => CheckTime(v.Time, v.Period) + "' " + v.Gtype)) })
           .ToList();
修改代码:

Period = g.Select(p => p.Period)

假设您想要lastname和period的唯一组,而不是名称组中的第一个句点,则可以使用.GroupBys=>new{s.lastname,s.period}对lastname和period进行分组。该键将包含两个属性:

Period = g.Select(p => p.Period).FirstOrDefault()

假设您想要lastname和period的唯一组,而不是名称组中的第一个句点,则可以使用.GroupBys=>new{s.lastname,s.period}对lastname和period进行分组。该键将包含两个属性:

Period = g.Select(p => p.Period).FirstOrDefault()

您已经在从Person对象中选择属性,对吗?错误是因为您的查询正在返回列表,而您正试图将其存储在字符串类型的变量中。Period in Person是什么数据类型?您能否描述一下您试图通过此查询实现的目标?您正在按人员的姓氏获取一些聚合数据,但是person的Period中存储了什么?你能给我们定义person和CheckTime吗?@jdweng为什么是FirstOrDefault?为什么不加入或加入?您已经从Person对象中选择了属性,对吗?错误是因为您的查询正在返回列表,而您正试图将其存储在字符串类型的变量中。Period in Person是什么数据类型?您能否描述一下您试图通过此查询实现的目标?您正在按人员的姓氏获取一些聚合数据,但是person的Period中存储了什么?你能给我们定义person和CheckTime吗?@jdweng为什么是FirstOrDefault?为什么不加入或加入?