C# 使用MAX将SQL转换为LINQ
我有两张桌子 1) 合资企业信用指数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
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()做了一个调整,它开始工作,谢谢