C# 使用MAX将SQL转换为LINQ

C# 使用MAX将SQL转换为LINQ,c#,sql,linq,max,C#,Sql,Linq,Max,我有两张桌子 1) 合资企业信用指数 2) 合资企业信贷指数合同 我想要下面这样的SQL查询作为LINQ表达式 SELECT MAX(INDEX_FAMILY_VERSION) FROM T_EJV_CREDIT_DS_INDEX cdi INNER JOIN T_EJV_CREDIT_DS_INDEX_CONTRACT cdic ON cdic.INDEX_ID = cdi.INDEX_ID WHERE cdi.INDEX_SHORT_NAME LIKE '%@VARIABLE1%' AND

我有两张桌子

1) 合资企业信用指数
2) 合资企业信贷指数合同

我想要下面这样的SQL查询作为LINQ表达式

SELECT MAX(INDEX_FAMILY_VERSION) FROM T_EJV_CREDIT_DS_INDEX cdi
INNER JOIN T_EJV_CREDIT_DS_INDEX_CONTRACT cdic
ON cdic.INDEX_ID = cdi.INDEX_ID
WHERE cdi.INDEX_SHORT_NAME LIKE '%@VARIABLE1%'
AND cdic.TENOR = @VARIABLE2
这就是我迄今为止所做的尝试

var maxFamilyVersion = (from ic in dsIndexContract
                       join i in dsIndex on i.INDEX_ID equals ic.INDEX_ID
                       where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR equals d.TERM 
                       select new
                       {
                           ic.INDEX_FAMILY_VERSION.Max()     
                       }).Take(1).ToList();
但是上面提到的开始显示syantax的编译问题,如下所示


使用=检查您的where条件是否相等。关键字
equals
仅在联接条件中使用

  var result = (from ic in dsIndexContract
                join i in dsIndex on i.INDEX_ID equals ic.INDEX_ID
                where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                select new
                {
                    ic.INDEX_FAMILY_VERSION.Max()     
                }).FirstOrDefault();
您可以使用
.FirstOrDefault()
来检索第一项,而不是
.Take(1).ToList()

或者更有效的方法是直接使用
.Max()
而不是
.FirstOrDefault()


可以使用=检查where条件中的相等性。关键字
equals
仅在联接条件中使用

  var result = (from ic in dsIndexContract
                join i in dsIndex on i.INDEX_ID equals ic.INDEX_ID
                where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                select new
                {
                    ic.INDEX_FAMILY_VERSION.Max()     
                }).FirstOrDefault();
您可以使用
.FirstOrDefault()
来检索第一项,而不是
.Take(1).ToList()

或者更有效的方法是直接使用
.Max()
而不是
.FirstOrDefault()


可以使用=检查where条件中的相等性。关键字
equals
仅在联接条件中使用

  var result = (from ic in dsIndexContract
                join i in dsIndex on i.INDEX_ID equals ic.INDEX_ID
                where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                select new
                {
                    ic.INDEX_FAMILY_VERSION.Max()     
                }).FirstOrDefault();
您可以使用
.FirstOrDefault()
来检索第一项,而不是
.Take(1).ToList()

或者更有效的方法是直接使用
.Max()
而不是
.FirstOrDefault()


检查在“where”条件下是否可以使用=进行条件的相等。关键字
equals
仅在联接条件中使用

  var result = (from ic in dsIndexContract
                join i in dsIndex on i.INDEX_ID equals ic.INDEX_ID
                where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                select new
                {
                    ic.INDEX_FAMILY_VERSION.Max()     
                }).FirstOrDefault();
您可以使用
.FirstOrDefault()
来检索第一项,而不是
.Take(1).ToList()

或者更有效的方法是直接使用
.Max()
而不是
.FirstOrDefault()

这应该做到:

var maxFamilyVersion = 
                 (from ic in dsIndexContract
                 join i in dsIndex on ic.INDEX_ID equals i.INDEX_ID
                 where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                 select ic.INDEX_FAMILY_VERSION).Max();
这应该做到:

var maxFamilyVersion = 
                 (from ic in dsIndexContract
                 join i in dsIndex on ic.INDEX_ID equals i.INDEX_ID
                 where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                 select ic.INDEX_FAMILY_VERSION).Max();
这应该做到:

var maxFamilyVersion = 
                 (from ic in dsIndexContract
                 join i in dsIndex on ic.INDEX_ID equals i.INDEX_ID
                 where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                 select ic.INDEX_FAMILY_VERSION).Max();
这应该做到:

var maxFamilyVersion = 
                 (from ic in dsIndexContract
                 join i in dsIndex on ic.INDEX_ID equals i.INDEX_ID
                 where i.INDEX_SHORT_NAME.CONTAINS(strindex) && ic.TENOR == d.TERM 
                 select ic.INDEX_FAMILY_VERSION).Max();

visual studio的好处在于它在问题所在的位置放置了一个红色的曲线。visual studio的好处在于它在问题所在的位置放置了一个红色的曲线。visual studio的好处在于它在问题所在的位置放置了一个红色的曲线。visual studio的好处在于它在问题所在的位置放置了一个红色的曲线。var result=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U系列版本)。Max()@Loetn您可以对像
ic.INDEX\u FAMILY\u VERSION.Max()这样的列执行
Max
,因为它不是一个集合。@Magnus是的,我知道,我的错。我会更改它。var result=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U系列版本)。Max()@Loetn您可以对像
ic.INDEX\u FAMILY\u VERSION.Max()这样的列执行
Max
,因为它不是一个集合。@Magnus是的,我知道,我的错。我会更改它。var result=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U系列版本)。Max()@Loetn您可以对像
ic.INDEX\u FAMILY\u VERSION.Max()这样的列执行
Max
,因为它不是一个集合。@Magnus是的,我知道,我的错。我会更改它。var result=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U系列版本)。Max()@Loetn您可以在像
ic.INDEX\u FAMILY\u VERSION.Max()这样的列上执行
Max
,因为它不是一个集合。@Magnus是的,我知道,我的错。我会更改它。var maxFamilyVersion=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U族版本)。Max()做了一个调整,它开始工作感谢SVAR maxFamilyVersion=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U族版本)。Max()做了一个调整,它开始工作感谢SVAR maxFamilyVersion=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX\U ID,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM选择i.INDEX\U族版本)。Max()做了一个调整,它开始工作感谢SVAR maxFamilyVersion=(从DSINDEXCONTRCT中的ic在ic.INDEX上的dsIndex中加入i等于i.INDEX,其中i.INDEX\U SHORT\U NAME.Contains(strindex)和&ic.TENOR==d.TERM select i.INDEX\U FAMILY\U VERSION)。Max()做了一个调整,它开始工作,谢谢