标签: linq-method-syntax

LINQ - 方法与查询语法的区别

我正在使用DataTable并注意到Resharper建议我可以将循环转换为LINQ表达式.我这样做了,它在查询表达式语法(简化)中重写:

var test1 = from DataRow row in dt.Rows select row;
Run Code Online (Sandbox Code Playgroud)

就个人而言,我更喜欢方法语法,所以重写它:

var test2 = dt.Rows.Select(row => row);
Run Code Online (Sandbox Code Playgroud)

它打破了.

'System.Data.DataRowCollection'不包含'Select'的定义,也没有扩展方法'Select'接受类型为'System.Data.DataRowCollection'的第一个参数'(你是否缺少using指令或程序集引用) ?)

由于查询表达式被转换为方法调用,为什么第一个工作但不是第二个?我希望两者都可以或者两者都不工作,这显然不是这样.

c# linq linq-query-syntax linq-method-syntax

9
推荐指数
1
解决办法
1759
查看次数

Resharper 9转换为LINQ:方法语法

我使用Resharper(c#)多年,发现自动转换为linq表达式功能非常有用。

我最近已升级到resharper的V9,现在使用的是linq查询语法,而不是我偏爱的方法语法。

有人知道有什么方法可以强制重新分配器使用方法语法吗?我曾尝试使用Google谷歌搜索,并研究过转售商选项,但未发现任何问题。任何帮助,将不胜感激。

谢谢。

linq resharper linq-method-syntax resharper-9.0

5
推荐指数
1
解决办法
1346
查看次数

具有 INNER 和 OUTER Join 的 LINQ 方法语法

我有 3 个课程,并试图用它LINQ methods来执行 anINNER JOIN和 a LEFT JOIN。我可以单独执行每个操作,但不能一起执行,因为我什至无法弄清楚语法。

最终,我要编写的 SQL 是:

SELECT *
FROM [Group] AS [g]
INNER JOIN [Section] AS [s] ON [s].[GroupId] = [g].[Id]
LEFT OUTER JOIN [Course] AS [c] ON [c].[SectionId] = [s].[Id]
Run Code Online (Sandbox Code Playgroud)

课程

public class Group {
    public int Id { get; set; }
    public int Name { get; set; }
    public bool IsActive { get; set; }
    public ICollection<Section> Sections { get; set; }
}

public class Section { …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda linq-method-syntax

5
推荐指数
1
解决办法
3120
查看次数

LINQ to Entities无法识别我的方法

我想在LINQ选择中将日期和时间转换为波斯语,但linq无法识别我的方法:

LINQ to Entities无法识别方法'System.String toPersianDateTime(System.DateTime)'方法,并且此方法无法转换为存储表达式.

如何将我的方法更改为LINQ兼容?

我的方法:

public static string toPersianDateTime(DateTime dt)
{
    PersianCalendar pc = new PersianCalendar();
    string pDateTime = pc.GetYear(dt).ToString() + "/" + pc.GetMonth(dt).ToString() + "/" + pc.GetDayOfMonth(dt).ToString() + " ";
    pDateTime += pc.GetHour(dt) + ":" + pc.GetMinute(dt) + ":" + pc.GetSecond(dt);
    return pDateTime;
}
Run Code Online (Sandbox Code Playgroud)

我的LINQ代码:

var result = (from ord in db.vw_orders
              where ord.uid == user.id
              orderby ord.order_date descending
              select new { ord.id,
                           date = Tools.toPersianDateTime((DateTime)ord.order_date),
                           ord.is_final, 
                           ord.status, 
                           ord.image_count, 
                           ord.order_count, 
                           ord.total_price });
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities linq-method-syntax

2
推荐指数
1
解决办法
2069
查看次数

LINQ 按日期分组 - 不使用 join 包括空天

使用 C#、NHibernate、NHibernate 到 LINQ。使用 NHibernate 到 LINQ,我没有 JOIN 功能。我也不能使用 QueryOver。

我有一个 LINQ 查询,可以计算潜在客户和销售的数量。此表仅在新的潜在客户或销售完成时创建,因此有时没有插入行。执行以下查询有效

var query3 = query2.AsEnumerable()
           .Where(x => x.Created <= toDate.Value && x.Created >= fromDate.Value)
           .GroupBy(x => x.Created.Date)
           .Select(g => new ReferrerChart {
               Date = g.Key.Date,
               LeadsCount = g.Count(x => !x.IsSale),
               SalesCount = g.Count(x => x.IsSale)
           });
Run Code Online (Sandbox Code Playgroud)

但有些日期不在那里(有 0 个潜在客户和销售的日期)。

如何包含这些日期并让它们在不使用 join 的情况下设置 LeadsCount = 0 和 SalesCount = 0?

编辑:

最终结果有效:

var selectedFromDate = fromDate.Value;
var selectedToDate = toDate.Value;

var selectedDates = Enumerable.Range(0, 1 + selectedToDate.Subtract(selectedFromDate).Days)
          .Select(offset => …
Run Code Online (Sandbox Code Playgroud)

c# linq nhibernate join linq-method-syntax

1
推荐指数
1
解决办法
2557
查看次数