C#linq2sql选择多个列

时间:2012-02-03 22:10:54

标签: c# winforms linq-to-sql c#-4.0

我很难在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});

4 个答案:

答案 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声明