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