C#linq2sql选择多个列

本文关键字:选择 C#linq2sql | 更新日期: 2023-09-27 18:22:21

我很难在carCheckouts表中选择多个列。我只想要我知道pk的一行的起始Miles和结束Miles。我的linq陈述正确吗?如果是,我如何在之后将b.startMiles和b.endMiles转换为可用变量?感谢

var m = (from b in db.carCheckouts
where b.pk == primaryKey
select new {b.startMiles, b.endMiles});

C#linq2sql选择多个列

您当前的查询返回一个匿名类型的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);

您已经将m变成了一个匿名类型(实际上m将是该匿名类型的IQueryable<>),可以在其声明的范围内的任何位置使用。添加Anon类型是为了允许这样的事情,所以你不必预先创建一个包含这些值的类型,你可以动态创建类型。

如果你只想有1而不是IQueryable,你可以做.FirstOrDefault或只是.First来给你该anon类型的1实例。

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;
}

您也可以使用

选择新的{b.startMiles,b.endMiles})。FirstOrDefault();

在您的linq语句上