我很难在carCheckouts表中选择多个列。我只想从一行知道pk的startMiles和endMiles。我的linq声明是否正确?如果是这样,我如何将b.startMiles和b.endMiles转换为可用的变量?感谢
var m = (from b in db.carCheckouts
where b.pk == primaryKey
select new {b.startMiles, b.endMiles});
答案 0 :(得分:3)
您当前的查询返回匿名类型的IQueryable
- 但听起来您需要单个项:
var m = (from b in db.carCheckouts
where b.pk == primaryKey
select new {b.startMiles, b.endMiles}).Single();
现在您可以使用m
的属性:
Console.WriteLine("Start Miles:" + m.startMiles);
答案 1 :(得分:2)
你已经把m变成了一个匿名类型(实际上m将是一个类型的IQueryable<>),可以在它声明的范围内的任何地方使用。添加了Anon类型以允许这样的事情,因此您没有预先创建一个可以保存这些值的类型,您可以动态创建类型。
如果你只想拥有1而不是IQueryable,你可以做.FirstOrDefault或者只是.First给你那个anon类型的1个实例。
答案 2 :(得分:2)
var m = (from b in db.carCheckouts
where b.pk == primaryKey
select new {b.startMiles, b.endMiles});
double totalMiles;
foreach(var item in m)
{
totalMiles = item.endMiles - item.startMiles;
}
答案 3 :(得分:1)
您也可以使用
选择新的{b.startMiles,b.endMiles})。FirstOrDefault();
你的linq声明