我有一个数据库,其中有属性如“ 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'。
如何编写此表达式以获取所需的内容?
答案 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));