我已经搜索了网站,并切片和切丁这几种不同的方式,但我是新来的LINQ,我无法弄清楚如何从我的连接表中选择字段。每次运行时,我都会收到一条消息:如何选择与分组的LINQ查询连接的字段
“列UPC不属于表”。
“列条目不属于表”。
审计表对每个文件名都有一行数据,scanDetail表有多行与每个文件名关联。我需要加入这些表格,对数据进行分组,然后选择不同数量的UPC并仅显示最大条目号,以便每个文件名都有一行数据。
var query = from audit in audits.AsEnumerable()
join scan in scanDetail.AsEnumerable()
on audit.Field<string>("filename") equals scan.Field<string>("filename")
group audit by audit.Field<string>("filename") into g
select new
{
Account = g.Select(x => x.Field<string>("Account")),
Store = g.Select(x => x.Field<string>("Store")),
AuditDate = g.Select(x => x.Field<string>("AuditDate")),
UPCs = g.Select(x => x.Field<string>("UPC").Distinct().Count()),
Qty = g.Select(x => x.Field<string>("ScanQty")),
Retail = g.Select(x => x.Field<string>("RegTotal")),
Entries = g.Select(x => x.Field<string>("Entry").Max()),
Supervisor = g.Select(x => x.Field<string>("AuditSup")),
Division = g.Select(x => x.Field<string>("StoreDivision")),
Invoice = g.Select(x => x.Field<string>("InvAmount"))
};
我试过这种方式,结果相同。
var query =
from audit in audits.AsEnumerable()
join scan in scanDetail.AsEnumerable()
on audit.Field<string>("filename") equals
scan.Field<string>("filename")
group audit by new {storeDisk = audit.Field<string>("filename"),
Account = audit.Field<string>("Account"),
Store = audit.Field<string>("Store"),
AuditDate = audit.Field<string>("AuditDate"),
UPCs = (from UPC in scanDetail.AsEnumerable()
select scan.Field<string>("UPC")),
Qty = audit.Field<string>("ScanQty"),
Retail = audit.Field<string>("RegTotal"),
Entries = (from Entry in scanDetail.AsEnumerable()
select scan.Field<string>("Entry")),
Supervisor = audit.Field<string>("AuditSup"),
Division = audit.Field<string>("StoreDivision"),
Invoice = audit.Field<string>("InvAmount")
} into g
select new
{
Account = g.Key.Account,
Store = g.Key.Store,
AuditDate = g.Key.AuditDate,
UPCs = g.Select(x => x.Field<string>("UPC").Distinct().Count()),
Qty = g.Key.Qty,
Retail = g.Key.Retail,
Entries = g.Select(x => x.Field<string>("Entry").Max()),
Supervisor = g.Key.Supervisor,
Division = g.Key.Division,
Invoice = g.Key.Invoice
};
哪些字段属于'scanDetail'表? 'UPC'和'Entry'肯定,还有其他? –
那些是唯一的两个。 –