后续:C#Linq字符串与indexOf进行比较

时间:2017-10-18 23:48:56

标签: c# mysql linq

我问了一个已回答的MS SQL问题> here<。这是一个后续问题。本质上它是相同的,除了数据库是MySQL而不是MS SQL,LINQ查询的对象是view而不是表。

我现在的问题是关于MySQL数据库的EF查询。我正在做一个非常相似的查询,但后端是MySQL数据库view而不是表。我正在尝试使用与MS SQL表完全相同的构造,并具有:

    from myView in db.companySessions
    where myView.machine.ToUpper().Substring(0,
            (int) SqlFunctions.CharIndex(myView.machine, "."))
        .Equals(machine.ToUpper().Substring(0,
            (int) SqlFunctions.CharIndex(machine.ToUpper(), ".")))

db.companySessions指向MySQL数据库中的视图。 machine是传递给该方法并由该方法验证的字符串。我得到了例外:

LINQ to Entities does not recognize the method 'Int32 IndexOf(System.String,
System.StringComparison)' method, and this method cannot be translated into
a store expression.

这是因为我正在进入view还是到达MySQL?

1 个答案:

答案 0 :(得分:1)

我将假设machine是一个局部变量

var thisMachineName = SomehowGetMachineName().ToUpper().Split('.').First();

所以您不需要在该变量上使用SqlFunctions

from myView in db.companySessions
where myView.machine.ToUpper().Substring(0,
        (int) SqlFunctions.CharIndex(myView.machine, "."))
    .Equals(thisMachineName)