簡體   English   中英

從lambda(方法)語法轉換為查詢語法(LINQ)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM