我是Lambda Expressions的新手,我试图为我自己设定的以下任务找到一个简单的解决方案。
客户拥有一系列汽车。使用LINQ获得他拥有的汽车总数。
下面的代码,不确定这是否正确?我的第二个问题是如何在文本框中显示TotalNumberCars
?
using (Entities dbcontext = new Entities())
{
var ListByOwner = from c in dbcontext.Owners
where c.OwnerID == OwnerID
group c by c.Cars into g
select new
{
Owner = g.Key,
TotalNumberCars = g.Sum(x => x.Cars)
};
lblTotalCars.Text = ListByOwner.ToList();
}
答案 0 :(得分:2)
我不知道您的实体数据模型是如何构建的,但我会这样做:
using (var dbContext = new Entities())
{
var numberOfCars = dbContext.Cars.Count(c => c.OwnerId == OwnderId);
lblTotalCars.Text = numberOfCars.ToString();
}
如果没有c.OwnerId,那么可以通过输入c.Owner.OwnerId来访问它。
答案 1 :(得分:1)
ListByOwner.ToList()
是您Select
投影中新项目的数组(通用列表)。每个项目都是一个动态实体,具有Owner
和TotalNumberCars
两个属性。您需要索引或预先进入列表,将所需内容提取到字符串中,并且可以是您的文本。
例如lblTotalCars.Text = ListByOwner[0].Owner;
将显示第一个项目的所有者。
拿这个并填写你需要的东西。
答案 2 :(得分:1)
检查此代码
lblTotalCars.Text = ListByOwner.ToList().sum(c=>c.TotalNumberCars).ToString();