LINQ如何在没有匿名类型的情况下由多个字段区分

Pra*_*eep 7 linq-to-entities c#-4.0

我有一个名为CLASS的表和Fields

    **{BATCH, DEGREE, DEPT, SEM, SECTION, GROUP }** 
Run Code Online (Sandbox Code Playgroud)

我有以下记录

记录1:{2009,BE,CSE,3Sem,ASec,1Group}

Record2:{2009,BE,CSE,3Sem,ASec,2Group}

Record3:{2009,BE,ECE,4Sem,ASec,1Group}

Record4:{2009,BE,ECE,4Sem,ASec,2Group}

我需要选择不同的记录忽略GROUP并仅考虑以下内容

{批次,学位,部门,SEM,部分}

所以它应该返回以下2个不同的记录

                  Record1: **{ 2009 , B.E , CSE , 3Sem , ASec , 1Group }** 
Run Code Online (Sandbox Code Playgroud)

DistinctRecord:1 ------------------------(OR)**

                  Record2: **{ 2009 , B.E , CSE , 3Sem , ASec , 2Group }**
Run Code Online (Sandbox Code Playgroud)

----- (AND)

                  Record3: **{ 2009 , B.E , ECE , 4Sem , ASec , 1Group }**
Run Code Online (Sandbox Code Playgroud)

DistinctRecord:2 ------------------------ (OR)

                  Record4: **{ 2009 , B.E , ECE , 4Sem , ASec , 2Group }**
Run Code Online (Sandbox Code Playgroud)

现在我正在使用以下LINQ查询

    public static object GetDistictClasses(IQueryable<Class> AllClasses)
    {
        return (from c in AllClasses
                group c by new { c.Batch, c.Degree_ID, c.Specialization_ID, c.CurrentSemester, c.Section_ID } into grp
                select new 
                {
                    grp.Key.Batch,
                    grp.Key.Degree_ID,
                    grp.Key.Specialization_ID,
                    grp.Key.CurrentSemester,
                    grp.Key.Section_ID
                }).Distinct();
    }
Run Code Online (Sandbox Code Playgroud)

但它返回一个Ananymous类型,但我需要实际的类类型

有人可以帮助我...谢谢你..

Regrads Pradeep

Ste*_*ven 26

您可以执行以下操作:

return
    from c in AllClasses
    group c by new
    {
        c.Batch, 
        c.Degree_ID, 
        c.Specialization_ID, 
        c.CurrentSemester, 
        c.Section_ID 
    } into grp
    select grp.First();
Run Code Online (Sandbox Code Playgroud)

Class将从给定组中获取每个第一个,因此返回Entity对象而不是匿名类型.

  • 我知道......这是礼物:-P (11认同)

Sac*_*sad 18

让我们简单 - 在两个属性上完成不同:

  • 用户的ID和
  • 小组ID

这也将返回相同的对象类型.

var distinctgroupSubscriptions = groupSubscriptions.GroupBy(item => new { item.User.Id, item.Group.GroupId }).Select(group => group.First()).ToList();
Run Code Online (Sandbox Code Playgroud)