Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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将iGroup从一个类转换为另一个类_C#_Linq_C# 4.0_Linq To Objects - Fatal编程技术网

C# 使用linq将iGroup从一个类转换为另一个类

C# 使用linq将iGroup从一个类转换为另一个类,c#,linq,c#-4.0,linq-to-objects,C#,Linq,C# 4.0,Linq To Objects,我有两个班,一个队,一个队 public class PlayerTeams { public int ID { get; set; } public string PlayerName { get; set; } public string PlayerCountry { get; set; } public bool IsActive { get; set; } public string PlayerTeam { get; set; } } pu

我有两个班,一个队,一个队

public class PlayerTeams
{
    public int ID { get; set; }
    public string PlayerName { get; set; }
    public string PlayerCountry { get; set; }
    public bool IsActive { get; set; }

    public string PlayerTeam { get; set; }
}

public class Players
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
    public bool? Status { get; set; }
}
我有一个
PlayerTeam
的列表,它按
PlayerTeam
进行分组,如下所示

var groupedPlayers = teams
            .OrderBy(x => x.PlayerName)
            .GroupBy( x => x.PlayerTeam)
            .ToList();
它的类型是
List
,但我希望它的类型是
List
,因为我不希望每一行都有冗余的键信息

我怎么可能做到呢?我只能在
I分组
上想到类似
.ConvertAll()
的东西。我也做不到


有没有有效的方法可以做到这一点?

如果您可以更改分组,我只需要使用:

var groupedPlayers = teams
            .OrderBy(x => x.PlayerName)
            .GroupBy(x => x.PlayerTeam, Players.FromPlayerTeam)
            .ToList();
其中
Players.FromPlayerTeam
Players
中的一个静态方法,它接受
PlayerTeam
并返回
Players


此外,我建议使用
ToLookup
而不是
GroupBy
-a
Lookup
正是您想要的,而不必费心于
ToList
调用。

这不是测试,只是一个想法。

如果您在将linq语句转换为字符串列表时遇到问题(该语句需要
IGrouping
类型),那么您可能必须先选择它

var groupedPlayers = new List<string>();
groupedPlayers = teams
        .OrderBy(x => x.PlayerName)
        .GroupBy(x => x.PlayerTeam, Players.FromPlayerTeam)
        .Select(x => x.Key) // << added select
        .ToList();
var groupedPlayers=newlist();
分组球员=团队
.OrderBy(x=>x.PlayerName)
.GroupBy(x=>x.PlayerTeam,Players.FromPlayerTeam)

.Select(x=>x.Key)//我觉得你的
PlayerTeams
类很奇怪-它不只是由
Player
和球队名称组成的吗?为什么你有单独的属性?@JonSkeet:我正在修改一个已经构建的应用程序。这是问题的抽象,我拥有的两个类的道具名称确实不同。一个是Linq2SQL类,另一个是前面创建的映射器类;如果有什么看起来不寻常的事情,最好解释一下。此外,您是否必须使用现有分组,或者您是否可以更改分组的起始代码?好的。我将尝试查找。同样的方法也适用于转换数据的查找?@naveen:是-您可以为键指定一个投影,为元素指定一个投影。明白了。查找速度非常快。(这对我也有帮助。多谢。