将String转换为Int以在Linq查询中使用它

时间:2015-07-22 18:38:57

标签: c# linq function edmx

这是我在edmx下的功能:ConceptualModels:

<Function Name="IntConvert" ReturnType="Edm.Int32">
      <Parameter Name="stringvalue" Type="Edm.String" />
      <DefiningExpression>
        CAST(stringvalue AS Edm.Int32)
      </DefiningExpression>
</Function>

以下是要翻译的方法:

public partial class SqlCustomFunctions
{
    [EdmFunction("MyModel", "IntConvert")]
    public static int IntConvert(string stringvalue)
    {
        throw new NotSupportedException("This function can only be used in a LINQ to Entities query");            
    }
}

这是调用函数的代码:

filterResults = filterResults.OrderBy(x => SqlCustomFunctions.IntConvert(x.Badge)).Skip(start).Take(length);

错误消息如下:

  

base = {“LINQ to Entities无法识别方法'Int32 IntConvert(System.String)'方法,而且此方法不能   翻译成商店表达。“}

看起来edmx没有编译功能或类似的东西。

导致此问题的原因是什么,我该如何解决?

2 个答案:

答案 0 :(得分:1)

请改为尝试:

filterResults = filterResults
    .OrderBy(x => Convert.ToInt32(x.Badge))
    .Skip(start)
    .Take(length);

测试是一个表格:

enter image description here

答案 1 :(得分:1)

你试过了吗??

CAST(stringvalue AS int)