繁体   English   中英

LINQ to SQL:如何实现LEAST或类似功能?

[英]LINQ to SQL: How to implement a LEAST or similar function?

鉴于:

一个名为TABLE_1的表,其中包含以下列:

  • ID
  • ColumnA
  • ColumnB
  • ColumnC
  • ColumnD

我有SQL查询,其中TABLE_1基于ColumnA,ColumnB,ColumnC连接两次。 查询可能如下所示:

Select t1.ID, t2.ID, t3.ID, LEAST(t1.ColumnD, t2.ColumnD, t3.ColumnD)
  From TABLE_1 t1
  Left Join TABLE_1 t2 On
       t1.ColumnA = t2.ColumnA
   And t1.ColumnB = t2.ColumnB
   And t1.ColumnC = t2.ColumnC
  Left Join TABLE_1 t3 On
       t2.ColumnA = t3.ColumnA
   And t2.ColumnB = t3.ColumnB
   And t2.ColumnC = t3.ColumnC

问题:

我需要在LINQ中重写Query。 我试过去刺它:

var query =
    from t1 in myTABLE1List // List<TABLE_1>
    join t2 in myTABLE1List
      on new {t1.ColumnA, t1.ColumnB, t2.ColumnC}
  equals new {t2.ColumnA, t2.ColumnB, t2.ColumnC}
    join t3 in myTABLE1List
      on new {t2.ColumnA, t2.ColumnB, t2.ColumnC}
  equals new {t3.ColumnA, t3.ColumnB, t3.ColumnC}
  select new {
    ID_1 = s1.ID,
    ID_2 = s2.ID,
    ID_3 = s3.ID,
    // Invalid anonymous type member declarator.
    // Anonymous type members must be declared with a member assignment,
    // simple name or member access.
    // how can I implement this?
    least(s1.ColumnD, s2.ColumnD, s3.ColumnD)
  };

....

private object least(params object[] objects)
{
  // code here that sorts the objects and returns the 'smallest' of them.

  return leastObject;
}

如何在LINQ中编写查询? 我究竟做错了什么? 我认为可以在LINQ表达式中使用函数,为什么我会收到此错误?

怎么样?

MinOfColumnD = Math.Min(Math.Min(s1.ColumnD, s2.ColumnD), s3.ColumnD))

编辑:假设每个表中的ColumnD是数字&'least`(在此上下文中)是给定列中最少3个数字。

编辑:如果列是字符串,确定最大值。 它可以持有的价值并在其上做一个.Parse 例如

MinOfColumnD = Math.Min(Math.Min(int.Parse(s1.ColumnD), int.Parse(s2.ColumnD)), int.Parse(s3.ColumnD)))

我可能错了,但我认为您需要将least的结果分配给新匿名类型实例的实际成员,例如:

select new {
    ID_1 = s1.ID,
    ID_2 = s2.ID,
    ID_3 = s3.ID,
    Least = least(s1.ColumnD, s2.ColumnD, s3.ColumnD)
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM