Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ Group by with two statements

Tags:

c#

linq

Hi is there anyway to write somthing like this

            var r = from i in myList
                group i by i.Number
                    into grp
                    select new
                    {
                        Reported = grp.Select(x => x.CurrentStatus).First(),
                        Number = grp.Key,
                        Sum = grp.Sum(x => x.Details[0].Quantity),
                        Name = grp.Select(x => x.Name).First(),
                        Details = grp.Select(x => x.Details).First(),
                        Descriptions = grp.Select(x => x.Descriptions).First(),
                        AssignmentId = grp.Select(x => x.AssignmentId).First(),
                        Listor = grp.Select(x => x.Number).Count()
                    };

into this

            var r = from i in myList
                group i by i.Number, i.CurrentStatus
                    into grp
                    select new
                    {
                        Reported = grp.Select(x => x.CurrentStatus).First(),
                        Number = grp.Key,
                        Sum = grp.Sum(x => x.Details[0].Quantity),
                        Name = grp.Select(x => x.Name).First(),
                        Details = grp.Select(x => x.Details).First(),
                        Descriptions = grp.Select(x => x.Descriptions).First(),
                        AssignmentId = grp.Select(x => x.AssignmentId).First(),
                        Listor = grp.Select(x => x.Number).Count()
                    };

so that i can group by " group i by i.Number, i.CurrentStatus"

like image 985
Tan Avatar asked Dec 28 '22 11:12

Tan


1 Answers

Group by an anonymous type:

        var r = from i in myList
            group i by new { i.Number, i.CurrentStatus }
                into grp
                select new
                {
                    Reported = grp.Key.CurrentStatus,
                    Number = grp.Key.Number,
                    Sum = grp.Sum(x => x.Details[0].Quantity),
                    Name = grp.Select(x => x.Name).First(),
                    Details = grp.Select(x => x.Details).First(),
                    Descriptions = grp.Select(x => x.Descriptions).First(),
                    AssignmentId = grp.Select(x => x.AssignmentId).First(),
                    Listor = grp.Select(x => x.Number).Count()
                };
like image 60
Quartermeister Avatar answered Jan 15 '23 12:01

Quartermeister