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# 从现有的一组对象创建新列表_C#_Linq_List_Sorting - Fatal编程技术网

C# 从现有的一组对象创建新列表

C# 从现有的一组对象创建新列表,c#,linq,list,sorting,C#,Linq,List,Sorting,我有一个用户对象列表(用户名(字符串)和等级(字符串)) 我想修改列表(或创建一个新列表),因此结果应该是一个包含htis值的新列表: user1 A,B user2 A,G user3 D 我试过GroupBy: var result = jquery.GroupBy(u => u.username).OrderByDescending(g => g.Count()).Select(g => g.Key); 但我想在新列表中显示结果,请尝试以下操作:- var query

我有一个用户对象列表(用户名(字符串)和等级(字符串))

我想修改列表(或创建一个新列表),因此结果应该是一个包含htis值的新列表:

user1 A,B
user2 A,G
user3 D
我试过GroupBy:

var result = jquery.GroupBy(u => u.username).OrderByDescending(g => g.Count()).Select(g => g.Key);
但我想在新列表中显示结果,请尝试以下操作:-

var query = users.GroupBy(x => x.UserName).OrderByDescending(x => x.Count())
                                        .Select(x => new { UserName = x.Key, Grades = String.Join(",", x.Select(z => z.Grade)) });
正在工作。

试试这个:-

var query = users.GroupBy(x => x.UserName).OrderByDescending(x => x.Count())
                                        .Select(x => new { UserName = x.Key, Grades = String.Join(",", x.Select(z => z.Grade)) });

工作。

您可以构建一个新类型,它将保存您想要的信息,如

public class UserGrade
{
    // the user's name.
    public string UserName { get; set;}

    // a comma separated list of the grades achieved by the user.
    public string Grades { get; set; }
}
然后我们根据用户名对结果进行分组,并为每组选择一个bew
UserGrade
对象。最后,我们调用
ToList
,以便将结果作为列表:

var result = jquery.GroupBy(u => u.username)
                   .Select(x=> new UserGrade{
                       UserName = x.Key,
                       Grades = String.Join(",",x.Select(y=>y.Grade)
                 }).ToList();
注意
您可以避免新类型的定义。在本例中,您的列表将包含匿名类型的OBEJCT序列。

您可以构建一个新类型,该类型将包含您想要的信息,如

public class UserGrade
{
    // the user's name.
    public string UserName { get; set;}

    // a comma separated list of the grades achieved by the user.
    public string Grades { get; set; }
}
然后我们根据用户名对结果进行分组,并为每组选择一个bew
UserGrade
对象。最后,我们调用
ToList
,以便将结果作为列表:

var result = jquery.GroupBy(u => u.username)
                   .Select(x=> new UserGrade{
                       UserName = x.Key,
                       Grades = String.Join(",",x.Select(y=>y.Grade)
                 }).ToList();
注意 您可以避免新类型的定义。在本例中,您的列表将包含一系列匿名类型的OBEJCT。

试试这个

var result = users
            .GroupBy(x => x.Name)
            .OrderByDescending(g => g.Count())
            .Select(g => new { Name = g.Key, Grades = string.Join(",", g.Select(x => x.Grade) });
这里是

试试这个

var result = users
            .GroupBy(x => x.Name)
            .OrderByDescending(g => g.Count())
            .Select(g => new { Name = g.Key, Grades = string.Join(",", g.Select(x => x.Grade) });

这里是

它工作得很好。因此,如果我用另一个元素扩展我的用户对象,比如说firstname,secondname,那么这可以在没有更大更改的情况下工作?@user576914-是的,这取决于您想要如何分组以及您期望的输出。它工作得非常好。因此,如果我用另一个元素扩展我的用户对象,比如说firstname,secondname,那么这可以在没有更大更改的情况下工作?@user576914-是的,这取决于您想要如何分组以及您期望的输出。