我的查询显示以下内容:
╔════════╦═════════╦══════════╦══════════╗
║ itemNo ║ buyerNo ║ sellerNo ║ itemDesc ║
╠════════╬═════════╬══════════╬══════════╣
║ 1 ║ B1 ║ S1 ║ Item1 ║
╠════════╬═════════╬══════════╬══════════╣
║ 2 ║ B2 ║ S2 ║ Item2 ║
╠════════╬═════════╬══════════╬══════════╣
║ 2 ║ B3 ║ S3 ║ Item2 ║
╠════════╬═════════╬══════════╬══════════╣
║ 3 ║ B4 ║ S4 ║ Item3 ║
╠════════╬═════════╬══════════╬══════════╣
║ 3 ║ B5 ║ S5 ║ Item3 ║
╚════════╩═════════╩══════════╩══════════╝
在上表中,
itemNo 2
以及 3
是重复的。
我想参加一个小组 buyerNo
以及 sellerNo
在同一个牢房里如果 itemNo
发现重复。 itemDesc
每一个都是相同的 itemNo
.
╔════════╦═════════╦══════════╦══════════╗
║ itemNo ║ buyerNo ║ sellerNo ║ itemDesc ║
╠════════╬═════════╬══════════╬══════════╣
║ 1 ║ B1 ║ S1 ║ Item1 ║
╠════════╬═════════╬══════════╬══════════╣
║ 2 ║ B2, B3 ║ S2, S3 ║ Item2 ║ <-itemNo 2 combined
╠════════╬═════════╬══════════╬══════════╣
║ 3 ║ B4, B5 ║ S4, S5 ║ Item3 ║ <-itemNo 3 combined
╚════════╩═════════╩══════════╩══════════╝
以下是我目前的查询:
public IQueryable GetAllInventorySummary()
{
var query = from summary in dataContext.Q_TBL_INVENTORY_SUMMARIES
group summary by new
{
itemNo = summary.itemNo,
buyerNo= summary.buyerNo,
sellerNo= summary.sellerNo,
itemDesc = summary.itemDesc,
} into grp
select new
{
itemNo = grp.Key.itemNo ,
buyerNo= grp.Key.buyerNo,
sellerNo= grp.Key.sellerNo,
itemDesc = grp.Key.itemDesc,
};
return query;
}
然后被解析为我的主方法:
RadGrid1.DataSource = inventory.GetAllInventorySummary();
2条答案
按热度按时间j8ag8udp1#
你必须使用
GROUPBY and GROUP_CONCAT
函数以实现预期的输出。dxxyhpgq2#
你只能试着分组
itemNo
以及itemDesc
,然后使用string.Join
连接字符串值。您可以尝试使用linqtosql
select
先从数据库获取数据,然后执行linqgroup by
.c#演示
结果
编辑
因为linqtosql不能翻译成sql(感谢@panagiotiskanavos指出)
我建议您执行sql语句
EF
SqlQuery
方法,可以使您的预期结果DB
. 然后绑定ORM
.性能可能比我的第一个解决方案要好。
创建
SummaryDTO
携带你的结果数据。