我需要搜索一个小数点(转换为字符串)是否包含在linq查询中的另一个小数(也转换为字符串)中,所以如果我在09
中过滤{12309123, 000999, 123459}
我只找到了前两个"元素" (123 09 123和00 09 99)。
query = query.Where(x => x.DecimalProp.ToString().Contains(filtri.DecimalProp.ToString()));
但是当我尝试query.toList()
时,它会抛出一个 System.NotSupportedException ("字符文字中的字符太多")。我在互联网上查看,但我找不到任何有用的东西。
有什么想法吗?
答案 0 :(得分:3)
Linq to EF不支持在任意对象上调用的方法ToString
。如果要在查询中执行此类转换,可以使用SqlFunctions类。此类为各种sql操作提供了一系列静态函数,包括将十进制转换为字符串的函数:
query = query.Where(x => SqlFunctions.StringConvert(x.DecimalProp).Contains(SqlFunctions.StringConvert(filtri.DecimalProp));