linq中tostring不能用,sql中的in在lambda表达式中的应用

然后从网上找到方法SqlFunctions.StringConvert

List<materials> materialList =je.materials.Where(x => checkedid.Contains(SqlFunctions.StringConvert((decimal?)x.ID))).ToList();

使用后还是报错

SqlFunctions”上指定的方法“System.String StringConvert(System.Nullable`1[System.Decimal])”无法转换为 LINQ to Entities 存储表达式

不知道什么情况,研究了半天也没思路

最后用的是sql语句查的

sql = string.Format(@"select * from materials where id in(" + checkedid + ")");
                List<materials> materialList = je.ExecuteStoreQuery<materials>(sql).ToList();

用sql查数据方便修改的时候也需要写sql语句,没有用lambda表达式方便,可以直接修改值,然后savechange

补充下新的方法 

string[] list = checkedid.Split(',');
                int[] arr = Array.ConvertAll<string, int>(list, delegate (string s) { return int.Parse(s); });
                List<materials> materialList = je.materials.Where(x => arr.Any(y => y == x.ID)).ToList();

当checkedid太多时方法报错 Too high level of nesting for select

修改成List<materials> materialList = je.materials.Where(x => arr.Contains(x.ID)).ToList();就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值