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();
}
展开
 我来答
zhan_xp
2013-05-03 · TA获得超过188个赞
知道小有建树答主
回答量:162
采纳率:0%
帮助的人:185万
展开全部
把你的字符串分割为一个 list<int>. 或者 int[]. 使用 list.contains(c.classid).

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 语法;  效率应该是没有大的差别吧~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卷人2f
2013-05-03 · TA获得超过1352个赞
知道小有建树答主
回答量:1044
采纳率:50%
帮助的人:729万
展开全部
你的写法看着好别扭,为什么要判断>=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;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式