然后从网上找到方法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();就可以了