我是 Linq 的新手,我确信我已经以一种复杂的方式解决了这个问题。我试图在 Linq 中做类似这样的 SQL:
SELECT DISTINCT
count(vendor) as vendorCount,
reqDate,
status,
openDate,
item,
poDate,
count(responseDate) as responseCount
FROM
myTable
GROUP BY
reqDate, status, openDate, item, poDate
HAVING
reqDate > openDate
这是我到目前为止所拥有的。
var groupQuery = (from table in dt.AsEnumerable()
group table by new
{
vendor = table["vendor"], reqdate = table.Field<DateTime>("ReqDate"), status = table["status"],
open = table["openDate"],
item = table["item"),
podate = table.Field<DateTime>("PODate"), responsedate = table.Field<DateTime>("responseDate"),
}
into groupedTable
where Having(groupedTable.Key.reqdate, groupedTable.Key.openDate) == 1
select new
{
x = groupedTable.Key,
y = groupedTable.Count()
}).Distinct();
foreach (var req in groupQuery)
{
Console.WriteLine("cols: {0} count: {1} ",
req.x, req.y);
}
Have() 是一个函数,它接受两个日期时间参数,如果 reqDate 大于 openDate,则返回 1。它编译并运行,但它显然没有给我想要的结果。这可能使用Linq吗?我想将此数据推送到 Excel 电子表格,因此我希望从此 linq 查询创建一个数据表。我最好从我的数据表中创建一个数据视图而不是弄乱 Linq 吗?