LINQ选择一行最多包含一列而另一列不同的列

伪码

我正在使用LINQ to Entities查询以下MS-SQL表:

RateID  RateTypeID  Amount  EffectiveDate   IsRetired
------  ----------  ------  -------------   ---------
1       1           0.565   1/1/2013 0:00   FALSE
2       2           6.000   1/1/2013 0:00   FALSE
3       3           9.000   1/1/2013 0:00   FALSE
4       4           12.000  1/1/2013 0:00   FALSE
5       5           1.500   1/1/2013 0:00   FALSE
6       1           0.550   7/1/2012 0:00   FALSE
7       1           0.495   1/1/2012 0:00   FALSE
8       3           8.000   1/1/2011 0:00   FALSE
9       3           11.000  1/1/2015 0:00   FALSE
10      5           2.000   7/1/2013 0:00   TRUE

我想构建一个函数,该函数将使用LINQ返回IQueryable(Of Rate),然后可以将其加入其他查询中,从而有效地确定应用于每个项目的当前费率RateTypeIDIsRetired必须是错误的,我需要最近的一行EffectiveDate

这是我最近得到的(LINQPad VB语句):

Dim dateNow As Date = Date.Now
Dim result = (
    From r In Rates
    Where r.IsRetired = False And r.EffectiveDate <= dateNow
    Group r By r.RateTypeID
    Into rg = Group
    Select New With {
        .cr = rg.OrderByDescending(Function(r) r.EffectiveDate).Take(1)
    }
)
result.Dump()

该查询返回DbQuery(Of AnonymousType_1(Of IEnumerable(Of Rate)))(一个集合,每个集合具有1个速率项),这并不是我想要的。

这个问题解答解决了一个非常相似的问题,但是是SQL而不是LINQ:如何通过SQL中的另一列选择具有MAX(Column value),DISTINCT的行?

我在vb.net中编码,但也会采用ac#答案。谢谢!

阿杜奇

在使用Take()return的IEnumerable<T>同时FirstOrDefault()返回just <T>,因此:

IQueryable<RecentRate> query = from r in Rates
                               where r.IsRetired == false && r.EffectiveDate <= dateNow
                               group r by r.RateTypeID into rg
                               select new RecentRate
                               {
                                 Rate = rg.OrderByDescending(r => r.EffectiveDate).FirstOrDefault()
                               };

这可能起作用:

   IQueryable<Rate> query = from r in Rates
                            where r.IsRetired == false && r.EffectiveDate <= dateNow
                            group r by r.RateTypeID into rg
                            select rg.OrderByDescending(r => r.EffectiveDate).FirstOrDefault();

我认为这是VB语法

Dim result = (
    From r In Rates
    Where r.IsRetired = False And r.EffectiveDate <= dateNow
    Group r By r.RateTypeID
    Into rg = Group
    Select rg.OrderByDescending(Function(r) r.EffectiveDate).FirstOrDefault()
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

给定另一列,选择一列具有不同值的行

来自分类Dev

在另一列内的一组行中选择列的第一行

来自分类Dev

如何检查一列的值是否在另一行的另一列中

来自分类Dev

SQL如何基于另一列中的值在一行中多次选择列

来自分类Dev

将一列推到另一行

来自分类Dev

根据另一列的上一行计算一列

来自分类Dev

oracle中一列与同一行的另一列的比较

来自分类Dev

从每一行的另一列中减去一列的内容

来自分类Dev

选择一列+另一列最大日期

来自分类Dev

如何在MySQL中用另一行的另一列更新一行的一列的内容

来自分类Dev

从另一列中选择列,作为每一列的行

来自分类Dev

选择在一列中具有相同值而在另一列中具有不同值的行

来自分类Dev

一列的一行与不同列的下一行之间的差异

来自分类Dev

根据其他两列选择最多一列

来自分类Dev

从另一列中选择所有包含值的

来自分类Dev

LINQ选择不同一列超时错误

来自分类Dev

SQL CE:选择不同的,按另一列排序

来自分类Dev

SQL:为另一列选择不同的值

来自分类Dev

从data.table中删除一列相同但另一列不同的行

来自分类Dev

删除一列中值重复但另一列中值不同的行

来自分类Dev

根据一列的MAX和另一列的相关MIN选择行

来自分类Dev

R - 根据另一列中的另一行向下填充一列的行

来自分类Dev

根据两列选择一行,其中一列具有ID,另一列具有特定值

来自分类Dev

R计算行平均值,每一行显示不同的列,如另一列所示

来自分类Dev

当只有一列不同时选择不同的行 Linq

来自分类Dev

基于另一列的当前行和同一列的上一行的列的增量值

来自分类Dev

为一列选择不同

来自分类Dev

Laravel 选择行有一列包含输入变量

来自分类Dev

选择最后一行并将其移至上一行的最后一列

Related 相关文章

  1. 1

    给定另一列,选择一列具有不同值的行

  2. 2

    在另一列内的一组行中选择列的第一行

  3. 3

    如何检查一列的值是否在另一行的另一列中

  4. 4

    SQL如何基于另一列中的值在一行中多次选择列

  5. 5

    将一列推到另一行

  6. 6

    根据另一列的上一行计算一列

  7. 7

    oracle中一列与同一行的另一列的比较

  8. 8

    从每一行的另一列中减去一列的内容

  9. 9

    选择一列+另一列最大日期

  10. 10

    如何在MySQL中用另一行的另一列更新一行的一列的内容

  11. 11

    从另一列中选择列,作为每一列的行

  12. 12

    选择在一列中具有相同值而在另一列中具有不同值的行

  13. 13

    一列的一行与不同列的下一行之间的差异

  14. 14

    根据其他两列选择最多一列

  15. 15

    从另一列中选择所有包含值的

  16. 16

    LINQ选择不同一列超时错误

  17. 17

    SQL CE:选择不同的,按另一列排序

  18. 18

    SQL:为另一列选择不同的值

  19. 19

    从data.table中删除一列相同但另一列不同的行

  20. 20

    删除一列中值重复但另一列中值不同的行

  21. 21

    根据一列的MAX和另一列的相关MIN选择行

  22. 22

    R - 根据另一列中的另一行向下填充一列的行

  23. 23

    根据两列选择一行,其中一列具有ID,另一列具有特定值

  24. 24

    R计算行平均值,每一行显示不同的列,如另一列所示

  25. 25

    当只有一列不同时选择不同的行 Linq

  26. 26

    基于另一列的当前行和同一列的上一行的列的增量值

  27. 27

    为一列选择不同

  28. 28

    Laravel 选择行有一列包含输入变量

  29. 29

    选择最后一行并将其移至上一行的最后一列

热门标签

归档