我正在使用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指令或程序集引用) ?)
由于查询表达式被转换为方法调用,为什么第一个工作但不是第二个?我希望两者都可以或者两者都不工作,这显然不是这样.
我使用Resharper(c#)多年,发现自动转换为linq表达式功能非常有用。
我最近已升级到resharper的V9,现在使用的是linq查询语法,而不是我偏爱的方法语法。
有人知道有什么方法可以强制重新分配器使用方法语法吗?我曾尝试使用Google谷歌搜索,并研究过转售商选项,但未发现任何问题。任何帮助,将不胜感激。
谢谢。
我有 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) 我想在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#、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)