linq to entity不识别方法"System.String ToString()"求大神解决
将班级id以字符串形式输入如:“1111,1112,1113”。数据库里的id为int型,在数据路里找到匹配的相应班级转换成列表。在这里爆出问题:不识别方法"System...
将班级id以字符串形式输入如:“1111,1112,1113”。
数据库里的id为int型,
在数据路里找到匹配的相应班级转换成列表。
在这里爆出问题:不识别方法"System.String ToString()",跪求大神提出解决方案。
public IEnumerable<Class1> FindClassesByIDs(string ids)
{
var r = from c in this.DbContext.Class1
where ids.IndexOf(c.Class1ID.ToString()) >= 0
select c;
return r.ToList();
} 展开
数据库里的id为int型,
在数据路里找到匹配的相应班级转换成列表。
在这里爆出问题:不识别方法"System.String ToString()",跪求大神提出解决方案。
public IEnumerable<Class1> FindClassesByIDs(string ids)
{
var r = from c in this.DbContext.Class1
where ids.IndexOf(c.Class1ID.ToString()) >= 0
select c;
return r.ToList();
} 展开
2个回答
展开全部
把你的字符串分割为一个 list<int>. 或者 int[]. 使用 list.contains(c.classid).
http://www.cnblogs.com/xingqiba/archive/2012/05/23/2514872.html
http://www.cnblogs.com/xingqiba/archive/2012/05/23/2514872.html
追问
这样效率会降低吗,有没有其他更好的办法呢
var strids= ids.Split(',');
int []intids=new int[strids.Length];
for (int i = 0; i < strids.Length; i++)
{
intids[i] =int.Parse(strids[i]);
}
intids.contain(.......)
追答
最重要的问题是 linq 不支持 IndexOf, 而支持 contains 语法; 效率应该是没有大的差别吧~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的写法看着好别扭,为什么要判断>=0呢?你的目的是应该取那个包含在string里面的ID吧,既然是这样,为什么不用in呢?
追问
判断>=0,是为了验证id是否包含在字符串ids中,将符合条件的class1对象都取出来,iin好用吗?你的方法可以规避tostring()的问题吗,可以吧你写的贴出来看看吗
追答
改成这样:
string str=“1111,1112,1113”;
string[] strArray =str.Split(new char[]{ ',' });
int[] intArray;
intArray = Array.ConvertAll(strArray, s => int.Parse(s));
var r = from c in this.DbContext.Class1
where c.Class1ID in intArray select c;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询