如何使这个linq表达?

时间:2018-09-24 11:12:29

标签: c# linq

我有一个数据库,其中有属性如“ 12.34.56.78”的数据。
我要使用此数据

using (Data context = new Data(connection, compiledModel, true))
{
}

现在,我只想获取第一个和第二个数字与我的值相同的数据。
我已经尝试过了:

myData = context.Where(x => x.Numbers.Split('.')[0] == firstNumber && x.Numbers.Split('.')[1] == secondNumber)

但这只会让我看到这个错误:

  

System.NotSupportedException:'LINQ to Entities不支持LINQ表达式节点类型'ArrayIndex'。

如何编写此表达式以获取所需的内容?

1 个答案:

答案 0 :(得分:1)

编写IQueryable查询时,应始终考虑如何将其转换为SQL查询。

如何通过简单的SQL查询来做到这一点?
SQL中没有Split,因此您可能会执行以下操作:

SELECT * FROM Table WHERE Numbers LIKE '12.34.%'

这等效于以下LINQ:

string prefix = $"{firstNumber}.{secondNumber}.";
myData = context.Where(x => x.Numbers.StartsWith(prefix));