十进制包含在另一个十进制linq中

时间:2014-10-14 09:59:48

标签: c# linq decimal

我需要搜索一个小数点(转换为字符串)是否包含在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 ("字符文字中的字符太多")。我在互联网上查看,但我找不到任何有用的东西。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

Linq to EF不支持在任意对象上调用的方法ToString。如果要在查询中执行此类转换,可以使用SqlFunctions类。此类为各种sql操作提供了一系列静态函数,包括将十进制转换为字符串的函数:

query = query.Where(x => SqlFunctions.StringConvert(x.DecimalProp).Contains(SqlFunctions.StringConvert(filtri.DecimalProp));