gpt4 book ai didi

c# - 用 Let 过滤

转载 作者:太空狗 更新时间:2023-10-30 01:20:40 26 4
gpt4 key购买 nike

我继承了一个具有以下 tblTradeSpends 表的应用程序:

ID   PromoID    Customer    LineOfBusiness     DealYear    VersionDate
1 p100 200 SCF 2013 2/23/2013
2 p101 200 SCF 2013 2/23/2013
3 p102 200 SCF 2013 2/23/2013
4 p103 200 SCF 2013 2/23/2013
5 p100 200 SCF 2013 3/23/2013
6 p101 200 SCF 2013 3/23/2013
7 p102 200 SCF 2013 3/23/2013

Customer、LineOfBusiness、DealYear 和 VersionDate 的组合构成了交易 block 的“版本”概念。上面的数据描述了具有以下促销 ID 的两个版本:

Version 1 (Created 2/23/2013): p100, p101, p102, p103

Version 2 (Created 3/23/2013): p100, p101, p102

因此,当更新此交易 block 时,PromoID p103 的交易已被删除。

我有一个屏幕,我只想显示一组交易的最新版本。我想出了以下方法,我认为它是有效的,但实际上有一个错误:

var records = from t in query
let maxversion =
(from v in _context.tblTradeSpends
where v.PromoID == t.PromoID
select v.VersionDate).Max()
where t.PlanType == "Planner" &&
t.VersionDate == maxversion
select t

现在,销售员在最新版本中删除了 p103 交易,但由于它拥有任何具有其促销 ID 的交易的最大日期,因此它正在显示。

ID   PromoID    Customer    LineOfBusiness     DealYear    VersionDate
4 p103 200 SCF 2013 2/23/2013
5 p100 200 SCF 2013 3/23/2013
6 p101 200 SCF 2013 3/23/2013
7 p102 200 SCF 2013 3/23/2013

我不想在这个结果集中使用 p103。如何更新我的查询,以便仅显示具有最新 VersionDate 的 Customer、LineOfBusiness 和 DealYear 的唯一组合的记录?

更新

如果它不会把事情搞得一团糟,在 SQL 中我会按 Customer#、LineOfBusiness 和 DealYear 进行分组,确定该组的最大 VersionDate,然后将该日期用于我的过滤器。我不确定如何在这里做同样的事情。

最佳答案

是这样的吗?

    var records = from t in query
let maxversion =
(from v in _context.tblTradeSpends
where v.Customer == t.Customer
&& v.LineOfBusiness == t.LineOfBusiness
&& v.DealYear == t.DealYear
select v.VersionDate).Max()
where t.PlanType == "Planner" &&
t.VersionDate == maxversion
select t

关于c# - 用 Let 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18314624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com