我有一个名为campaign的表,它有一个名为snapshot的表中的外键。
我想从表campaigns和每个外键(snapshotid)中获取记录,以按列campaigname对它们进行区分。因此,在外键snapshotid中,我想使用datasetid,然后通过campaigname进行区分。
如果我使用distinctby而不是distinct,如果一个campaigname属于不同的外键,它将在所有情况下对它们进行区分。但是,我想区分对应于相同datasetid的campaigname的值
最后,作为一个结果,我正在尝试:我有一个名为upstream的campaigname,它属于外键(snapshotid)1、2和5。snapshotid 1和2对应于计划,5对应于生产。所以,我想带上所有记录,并过滤每个datasetid的活动名称。所以上游应该来两次。与生产和计划有关的一个。然而,在规划的上游,它将被区分,因为它存在两次。
快照表
市场活动表
作为例子:我试过了
var campaigns = db.Campaigns.Include(c => c.Snapshot)
.OrderBy(i => i.Snapshot.DatasetID)
.ThenBy(i => i.CampaignName.Distinct());
上面的一个抛出了一个exception=>dbdistinctexpression需要一个collection参数。参数名称:参数
var campaigns = db.Campaigns.Include(c => c.Snapshot)
.GroupBy(i => i.Snapshot.DatasetID)
.Select(i => i.CampaignName.Distinct());
上面没有这么编译,我试过很多组合但也没用。
如果可能的话,我想帮助使查询主要写在lambda中,然后同样的查询写在linq中
2条答案
按热度按时间q7solyqu1#
我用类来模拟你的数据库以显示正确的语法。必须检查创建日期是否介于开始日期和结束日期之间。
qpgpyjmq2#
初始结果无明显差异
我配置了查询:
var campaigns = db.Campaigns.Include(c => c.Snapshot) .GroupBy(i => i.Snapshot.DatasetID).AsEnumerable() .SelectMany(i =>i.DistinctBy(z=>z.CampaignName));
这是我想要的,但这次不显示datasetid新结果的值这次,如何显示datasetid值?
这是view.cshtml