gpt4 book ai didi

c# - 从 lambda(方法)语法转换为查询语法 (LINQ)

转载 作者:太空宇宙 更新时间:2023-11-03 21:33:59 25 4
gpt4 key购买 nike

如何翻译

var vehiclequery = db.position
.GroupBy(c => c.device_id)
.Select(g => g.OrderByDescending(c => c.sendtime).FirstOrDefault())
.Select(c => new myPosition()
{
battery_percentage = c.battery_percentage,
device_id = c.device_id,
latitude = c.latitude,
longitude = c.longitude,
speed = c.speed,
sendtime = c.sendtime
});

查询语法?现在我有一些愚蠢的东西,我不知道如何让它发挥作用。是这样的吗?

var vehiclequery = from dPosition in db.position
group dPosition by dPosition.device_id into xx
select new
{
device_id = xx.device_id
};

我知道遗漏了很多东西,但我被困在了这一点上。我尝试了在堆栈中推荐的工具 - http://www.linqpad.net/ , 但这只是从查询语法转换为方法语法。

感谢您提供任何帮助或指导如何完成这项工作。一些有用的手册页也将不胜感激,现在我只使用 http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

最佳答案

这不是一对一的转录,因为 let 的工作方式(在 let 之后您仍然可以访问 xx),但会产生相同的结果:

var vehiclequery = from dPosition in db.position
group dPosition by dPosition.device_id into xx
let c = xx.OrderByDescending(x => x.sendtime).FirstOrDefault()
select new
{
battery_percentage = c.battery_percentage,
device_id = c.device_id,
latitude = c.latitude,
longitude = c.longitude,
speed = c.speed,
sendtime = c.sendtime
};

或将子查询作为语法查询:

var vehiclequery = from dPosition in db.position
group dPosition by dPosition.device_id into xx
let c = (from x in xx
orderby x.sendtime desc
select x).FirstOrDefault()
select new
{
battery_percentage = c.battery_percentage,
device_id = c.device_id,
latitude = c.latitude,
longitude = c.longitude,
speed = c.speed,
sendtime = c.sendtime
};

关于c# - 从 lambda(方法)语法转换为查询语法 (LINQ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22724322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com