将简单SQL转换为Linq时出现问题
我很想把它转换成LINQ:将简单SQL转换为Linq时出现问题,sql,linq,linq-to-sql,Sql,Linq,Linq To Sql,我很想把它转换成LINQ: SELECT COUNT(1) AS Registrations, YEAR(Join_date) AS Year, MONTH(Join_date) AS Month FROM tblForumAuthor GROUP BY YEAR(Join_date), MONTH(Join_date) ORDER BY Year, Month 这只是一个简单的报告,但我不知道如何按“选择新”进行分组。我只做了这个可怜的尝试: var q = (from c in
SELECT
COUNT(1) AS Registrations,
YEAR(Join_date) AS Year,
MONTH(Join_date) AS Month
FROM tblForumAuthor
GROUP BY YEAR(Join_date), MONTH(Join_date)
ORDER BY Year, Month
这只是一个简单的报告,但我不知道如何按“选择新”进行分组。我只做了这个可怜的尝试:
var q = (from c in db.tblForumAuthors
select new {Year = c.Join_date.Year,
Month = c.Join_date.Month,
Registrations = });
它更像是这样-对不起,我没有能力测试它
var results = from r in tblForumAuthorm
group r by r.Join_date into
select new { Year =r.Join_Date.Year, Month = r.join_date.month };
它更像是这样-对不起,我没有能力测试它
var results = from r in tblForumAuthorm
group r by r.Join_date into
select new { Year =r.Join_Date.Year, Month = r.join_date.month };
迅速到达岗位。。。。但这应该能奏效。请注意如何使用匿名类型按多个字段分组。组的属性可通过分组的键属性获得。但不确定这是否会产生Count1。IIRC将进行计数*
迅速到达岗位。。。。但这应该能奏效。请注意如何使用匿名类型按多个字段分组。组的属性可通过分组的键属性获得。但不确定这是否会产生Count1。IIRC将进行计数*
我打赌有更好的方法,但这里有一个 如果该表有两个定义如下的字段:
tblForumAuthor
==========================
Join_Date date
Name nvarchar(50)
var db = new DataClasses1DataContext();
var report =
from a in db.tblForumAuthors
group a by new {Year = a.Join_Date.Year, Month = a.Join_Date.Month}
into g
select new
{
Year = g.Key.Year,
Month = g.Key.Month,
Registrations = g.Count()
};
foreach( var item in report)
{
Console.WriteLine(item.Year + " " + item.Month + " " + item.Registrations);
}
您可以得到每个月+年组合中加入人数的报告,如下所示:
tblForumAuthor
==========================
Join_Date date
Name nvarchar(50)
var db = new DataClasses1DataContext();
var report =
from a in db.tblForumAuthors
group a by new {Year = a.Join_Date.Year, Month = a.Join_Date.Month}
into g
select new
{
Year = g.Key.Year,
Month = g.Key.Month,
Registrations = g.Count()
};
foreach( var item in report)
{
Console.WriteLine(item.Year + " " + item.Month + " " + item.Registrations);
}
我打赌有更好的方法,但这里有一个 如果该表有两个定义如下的字段:
tblForumAuthor
==========================
Join_Date date
Name nvarchar(50)
var db = new DataClasses1DataContext();
var report =
from a in db.tblForumAuthors
group a by new {Year = a.Join_Date.Year, Month = a.Join_Date.Month}
into g
select new
{
Year = g.Key.Year,
Month = g.Key.Month,
Registrations = g.Count()
};
foreach( var item in report)
{
Console.WriteLine(item.Year + " " + item.Month + " " + item.Registrations);
}
您可以得到每个月+年组合中加入人数的报告,如下所示:
tblForumAuthor
==========================
Join_Date date
Name nvarchar(50)
var db = new DataClasses1DataContext();
var report =
from a in db.tblForumAuthors
group a by new {Year = a.Join_Date.Year, Month = a.Join_Date.Month}
into g
select new
{
Year = g.Key.Year,
Month = g.Key.Month,
Registrations = g.Count()
};
foreach( var item in report)
{
Console.WriteLine(item.Year + " " + item.Month + " " + item.Registrations);
}
仅供参考,键入@Year=c.Join\u date.MonthJust仅供参考,键入@Year=c.Join\u date.MonthThanks!虽然“System.Linq.IGrouping”没有包含“Year”的定义,也没有扩展方法“Year”接受类型为“System.Linq.IGrouping”的第一个参数,但这似乎会产生红色的扭曲线。请参见上面的答案,在第二行g中。Year应该是g.Key.YearSuper谢谢!顺便说一句,您有一个无效的分号,但在其他方面似乎效果很好:D@Tom我没有看到@valipour的答案,但我们的答案几乎相同。我不见了,请输入查询。我已经编辑了答案或者只是参考了其他答案。谢谢!虽然“System.Linq.IGrouping”没有包含“Year”的定义,也没有扩展方法“Year”接受类型为“System.Linq.IGrouping”的第一个参数,但这似乎会产生红色的扭曲线。请参见上面的答案,在第二行g中。Year应该是g.Key.YearSuper谢谢!顺便说一句,您有一个无效的分号,但在其他方面似乎效果很好:D@Tom我没有看到@valipour的答案,但我们的答案几乎相同。我不见了,请输入查询。我已经编辑了答案或者只是参考了其他答案。谢谢!非常感谢,但它不编译“System.Linq.IGrouping”不包含“Year”的定义,并且没有扩展方法“Year”接受类型为“System.Linq.IGrouping”的第一个参数。如其他答案中所述,您缺少键属性。我的查询应该是从我头脑中的C编译器编译出来的……谢谢!非常感谢,但它不编译“System.Linq.IGrouping”不包含“Year”的定义,并且没有扩展方法“Year”接受类型为“System.Linq.IGrouping”的第一个参数。如其他答案中所述,您缺少键属性。我的查询应该是从我头脑中的C编译器编译出来的……这是错误的!你是按整个日期分组的,包括天、小时、秒……这是错误的!您按整个日期分组,包括天、小时、秒,。。。