VB.NET to C# Linq



我有以下LINQ

            Dim z = (From d In db.GPSdevice
                     Where d.CompanyId = currentuser.CompanyId And d.Type = "Truck" Or d.Type = "Trailer"
                     Order By d.ListOrder Descending
                     Group d By d.Driver Into g = Group
                     Select g.FirstOrDefault())

我尝试将其转换为c#

        var z = db.GPSdevices
            .Where(p => p.CompanyId == companyID && p.Type == "Truck" || p.Type == "Trailer") 
            .OrderByDescending(p => p.ListOrder)
            .GroupBy(p => p.Driver)
            .Select(g => new { Group = g });

但不确定,如何转换选择G.FirstordEfault((...

您也可以在c#中使用查询语法,无需直接使用扩展方法重写:

var z = (from d In db.GPSdevice
        where (d.CompanyId == currentuser.CompanyId) && (d.Type == "Truck") || (d.Type == "Trailer")
        orderby d.ListOrder descending
        group d by d.Driver into g = group
        select g.FirstOrDefault())

只需在您的Select

中调用g.FirstOrDefault()
    var z = db.GPSdevices
        .Where(p => p.CompanyId == companyID && p.Type == "Truck" || p.Type == "Trailer") 
        .OrderByDescending(p => p.ListOrder)
        .GroupBy(p => p.Driver)
        .Select(g => g.FirstOrDefault());

最新更新