Asp.net mvc linq to sql:组合2个查询并获取每个用户的总和

Asp.net mvc linq to sql:组合2个查询并获取每个用户的总和,asp.net-mvc,linq,Asp.net Mvc,Linq,这几乎是可行的,但对所有用户来说,总数都是一样的。我想我需要从用户那里获取UserId,这样我就可以在where子句中使用它,但是我不知道怎么做。我尝试添加.GroupBy(s=>s.User.Id),但它不起作用。 看法 视图模型 public class NorgescupenViewModel { public IEnumerable<User> Users { get; set; } public int? PoengNC { get; set; }

这几乎是可行的,但对所有用户来说,总数都是一样的。我想我需要从用户那里获取UserId,这样我就可以在where子句中使用它,但是我不知道怎么做。我尝试添加.GroupBy(s=>s.User.Id),但它不起作用。 看法

视图模型

public class NorgescupenViewModel
{
    public IEnumerable<User> Users { get; set; }
    public int? PoengNC { get; set; }
    public int? PoengDNC { get; set; }
    public decimal? SumPoeng { get; set; }
}
公共类NorgescupenViewModel
{
公共IEnumerable用户{get;set;}
公共int?PoengNC{get;set;}
公共int?PoengDNC{get;set;}
公共十进制数?SumPoeng{get;set;}
}

它正在工作。这就是我的结局

var poengNC = db.Resultater
            .Where(d => d.Stevne.Stevnetype.StevneTypeNavn == "NC"
            && d.Stevne.StevneDato.Value.Year == 2016 && d.PoengNc != null)
            .OrderByDescending(t => t.PoengNc).Take(2).ToList();

        var poengDNC = db.Resultater
            .Where(d => d.Stevne.Stevnetype.StevneTypeNavn == "DNC"
            && d.Stevne.StevneDato.Value.Year == 2016 && d.PoengNc != null )
            .OrderByDescending(t => t.PoengNc).Take(6).ToList();

        var totalNC = poengNC.Union(poengDNC)
            .GroupBy(s => s.User.FullName)
            .Select(s => new
            {
                //SumPoeng = s.Sum(a => a.PoengNc),
                SumPoeng = s.Sum(a => a.PoengNc),
                Navn = s.Key
            })
            .OrderByDescending(s => s.SumPoeng)
            .ToList();

您在模型设计中犯了一个很大的错误,您必须将模型属性作为用户类中的一个方法,或者您可以使用字典将每个用户绑定到其总和值(我认为是这样)。当它变得太复杂时,我很难理解它,所以我经常在控制器的视图instad中编写代码。我还在学习,所以希望有一天我能真正理解我在做什么。
public class NorgescupenViewModel
{
    public IEnumerable<User> Users { get; set; }
    public int? PoengNC { get; set; }
    public int? PoengDNC { get; set; }
    public decimal? SumPoeng { get; set; }
}
var poengNC = db.Resultater
            .Where(d => d.Stevne.Stevnetype.StevneTypeNavn == "NC"
            && d.Stevne.StevneDato.Value.Year == 2016 && d.PoengNc != null)
            .OrderByDescending(t => t.PoengNc).Take(2).ToList();

        var poengDNC = db.Resultater
            .Where(d => d.Stevne.Stevnetype.StevneTypeNavn == "DNC"
            && d.Stevne.StevneDato.Value.Year == 2016 && d.PoengNc != null )
            .OrderByDescending(t => t.PoengNc).Take(6).ToList();

        var totalNC = poengNC.Union(poengDNC)
            .GroupBy(s => s.User.FullName)
            .Select(s => new
            {
                //SumPoeng = s.Sum(a => a.PoengNc),
                SumPoeng = s.Sum(a => a.PoengNc),
                Navn = s.Key
            })
            .OrderByDescending(s => s.SumPoeng)
            .ToList();