C# 从集合LINQ(C)中的第一个组中选择项目

C# 从集合LINQ(C)中的第一个组中选择项目,c#,linq,C#,Linq,我用c语言创建纸牌游戏,我有以下类,包含玩家ID、每位玩家的牌集和两张最强大的牌: public class ResultsList { public int PlayerID = -1; public int Set = -1; public int Figure1 = -1; public int Figure2 = -1; } 程序创建结果列表: List<ResultsList> Results = new List<ResultsLi

我用c语言创建纸牌游戏,我有以下类,包含玩家ID、每位玩家的牌集和两张最强大的牌:

public class ResultsList
{
    public int PlayerID = -1;
    public int Set = -1;
    public int Figure1 = -1;
    public int Figure2 = -1;
}
程序创建结果列表:

List<ResultsList> Results = new List<ResultsList>();
接下来按集合、图1和图2对其进行排序,因此我得到以下列表示例:

PlayerID Set Figure1 Figure2 0 2 2 1 1 2 2 1 3 1 1 0 这意味着玩家0和1拥有相同的集合和数字,我想把它们都放在新列表中

List<int> Winers= new List<int>();
但在以下情况下,0是唯一的赢家:

PlayerID Set Figure1 Figure2 0 2 3 1 1 2 2 1 3 1 1 0 所以我只想把这个ID放到结果中。 如何做到这一点?

在结果排序后,您可以使用“首先”获得获胜者,然后使用“TakeWhile”获得与之相等的结果:

var winner = Results.First()
var winners = Results.TakeWhile(r => r.Set == winner.Set && r.Figure1 == winner.Figure1 && winner.Figure2 == r.Figure2).ToList();
结果排序后,您可以使用“第一个”获得赢家,然后使用“TakeWhile”获得与之相等的所有结果:

var winner = Results.First()
var winners = Results.TakeWhile(r => r.Set == winner.Set && r.Figure1 == winner.Figure1 && winner.Figure2 == r.Figure2).ToList();
您可以通过GroupBy实现这一点:

如果结果已经排序,您可以使用OrderBy和BEY子句。

您可以使用GroupBy实现这一点:


如果结果已经排序,您可以使用OrderBy和THEN by子句。

您如何通过提交图1和图2来判断获胜者?您用于将获胜者输入列表的代码在哪里Winers=新列表;欢迎来到btw,可能需要一些时间阅读,这将有助于解决这个问题和未来的问题。作为第一次尝试,还不错。您如何通过提交图1和图2来判断获胜者?您用于将获胜者输入列表的代码在哪里?Winers=new List;欢迎来到btw,可能需要一些时间阅读,这将有助于解决这个问题和未来的问题。不过作为第一次尝试,还不错。嘿,谢谢你们的回复和解决方案。这就是我要找的。嘿,谢谢你们的回复和解决方案。这就是我要找的。
List<ResultsList> items = Results.OrderByDescending(item1 => 
        item1.Set).ThenByDescending(item2 => item2.Figure1).ThenByDescending(item3 =>
            item3.Figure2).ToList();

        ResultsList winner = items[0];
        List<int> winners = new List<int>();
        winners.Add(winner.PlayerID);
        winners.AddRange(items.Where((item, index) => 
            index > 0 && item.Set == winner.Set && 
            item.Figure1 == winner.Figure1 && 
            item.Figure2 == winner.Figure2)
            .ToList().Select(item=>item.PlayerID));