[英]Translate from lambda (method) syntax to query syntax (LINQ)
如何翻譯
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
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.