【问题标题】:Use Aggregate function in C# Linq to retrieve data from CRM在 C# Linq 中使用聚合函数从 CRM 中检索数据
【发布时间】:2018-11-16 21:27:41
【问题描述】:

在这里我正在尝试评估最大日期(最新日期)条件,为此我认为我可以使用 MAX() 函数。

从语法的角度来看,我无法找到正确的方法。下面是我的查询。

var sfcStatusQuery = (from Carrier in _orgContext.CreateQuery("account")
                                          join SafetyFitnessCert in _orgContext.CreateQuery("mot_safetyfitnesscertificate")
                                            on Carrier["accountid"] equals SafetyFitnessCert["mot_carriernumber"]
                                          where (SafetyFitnessCert["mot_expirydate"] == null && (int)SafetyFitnessCert["statecode"] == 0)
                                          where SafetyFitnessCert.FormattedValues["new_sfcstatusname"].ToString().Equals("Suspended")
                                          where ((int)Carrier["statecode"] == 0 && Carrier["mot_number"].Equals(carrierNumber))
                                          //where SafetyFitnessCert["mot_lastreviseddate"]
                                          select new
                                          {
                                              SafetyCertSuspFlag = "Y"
                                          }).FirstOrDefault();

在上面的查询中,我尝试使用聚合函数 MAX 更正的注释 where 条件。由于此查询可能/可能不包含多个特定运营商编号的“暂停”状态的记录。

请指教。

【问题讨论】:

  • 我不认为 max 函数是获取最新日期的最佳方法,除非您只关心这一点,而不关心其他数据?

标签: c# linq lambda dynamics-crm


【解决方案1】:

如果我理解正确,您希望该日期的记录是最新的。在这种情况下,我将按该日期降序对数据进行排序。如果您这样做,最新日期将在第一条记录中,而不是 FirstOrDefault() 和您的完成。

所以用order by SafetyFitnessCert["mot_lastreviseddate"] descending代替where

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2021-10-06
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多