linq 中 in的表达式是什么?

kamengwang 2010-07-14 11:35:50
linq里in的表达式怎么表示
sql select * frame table where id in (xxx)
linq xxx.Where(p=>p.Id ???).ToList();



或者有什么解决办法么?id为int型
...全文
415 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hua_nan_she 2010-08-16
  • 打赏
  • 举报
回复
一楼吧
zhang1struts1yun 2010-08-13
  • 打赏
  • 举报
回复
表示取值的范围,比如 id in(1,2,3,4,5)就是把id编号为1,2,3,4,5的记录取出来
MM510 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 q107770540 的回复:]
C# code

string s = " 80,81,83,82";
string[] s1 = s.Split(',');
int[] p = new int[s1.Count()];

for (int i = 0; i < s1.Count(); i++)
{
p.SetValue(……
[/Quote]

思路是对的,不过当类型为int?类型的时候,好像不能用contains。。不知道你有没有测试过?
yingzhilian2008 2010-08-11
  • 打赏
  • 举报
回复
contains也可以
yingzhilian2008 2010-08-11
  • 打赏
  • 举报
回复
in 你可以 用id='11'||id='22'这种形势拼接出来
liulcster 2010-08-03
  • 打赏
  • 举报
回复
var tepmlist = from p in table
where p.ID.Contains("xxx")
select p;

return templist.ToList();
wulala789 2010-08-02
  • 打赏
  • 举报
回复

List<int> source = new List<int>();
List<int> contain = new List<int>();

source.AddRange(new[] {2,3,4,5});
contain.AddRange(new[] { 1, 5 });

var v = source.Intersect(contain);

Array.ForEach(v.ToArray(),i => MessageBox.Show(i.ToString()));
zhangyumei 2010-08-02
  • 打赏
  • 举报
回复
wuyq11 2010-07-14
  • 打赏
  • 举报
回复
int[] s = new int[]{1,2,3,4};
var q = from c in db.tB
where s.Contains(c.ID) select c;
var q =
from c in db.tB
where c.Products.Any(p => iD)
select c;
q107770540 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kamengwang 的回复:]

没有解决,这种方法也还是不对。

ef.Franchise_Perview.Where(p => userPurview.Contains(p.ID.ToString())).ToList();

ef.Franchise_Perview.Where(p => userPurview.Contains(p.ID.ToString())).ToList() 表达式不能包含 lambda e……
[/Quote]

试了4楼的方法没?不行就好好看 参考 的链接
kamengwang 2010-07-14
  • 打赏
  • 举报
回复
没有解决,这种方法也还是不对。

ef.Franchise_Perview.Where(p => userPurview.Contains(p.ID.ToString())).ToList();

ef.Franchise_Perview.Where(p => userPurview.Contains(p.ID.ToString())).ToList() 表达式不能包含 lambda expressions
zhangguofang1129 2010-07-14
  • 打赏
  • 举报
回复
问题已解决,友情帮顶
xtianliqi 2010-07-14
  • 打赏
  • 举报
回复
友情帮顶
kamengwang 2010-07-14
  • 打赏
  • 举报
回复
直接给方法吧,貌似我问的有问题

public List<Franchise_Perview> GetUserPurview(string userPurview)
{
return ef.Franchise_Perview.Where(p => ???).ToList();
}

按2楼的写不对,提示错误
q107770540 2010-07-14
  • 打赏
  • 举报
回复

string s = " 80,81,83,82";
string[] s1 = s.Split(',');
int[] p = new int[s1.Count()];

for (int i = 0; i < s1.Count(); i++)
{
p.SetValue(Convert.ToInt32(s1[i]), i);
}



public IQueryable<tbQuestions> SelectQuestions(int[] p)
{
var result = from s1 in db.tbQuestions
where !p.Contains(s1.id) && s1.deleteFlag == 0
select s1;
return result;
}


参考: myBlog
zning8191 2010-07-14
  • 打赏
  • 举报
回复
t.Select(p => p.id).ToList();
zning8191 2010-07-14
  • 打赏
  • 举报
回复
t.where(p=>p.id==obj.id).ToList();
shiyuyao1987 2010-07-14
  • 打赏
  • 举报
回复
p=>xxx.contains(p.Id)
kamengwang 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 q107770540 的回复:]
引用 8 楼 kamengwang 的回复:

没有解决,这种方法也还是不对。

ef.Franchise_Perview.Where(p => userPurview.Contains(p.ID.ToString())).ToList();

ef.Franchise_Perview.Where(p => userPurview.Contains(p.ID.ToString())).……
[/Quote]

参照4楼的方法还是不行啊

string[] uparr = userPurview.Split(',');

int[] upintarr = new int[uparr.Count()];

for (int i = 0; i < uparr.Length; i++)
{
upintarr[i] = int.Parse(uparr[i]);
}

return ef.Franchise_Perview.Where(p => upintarr.Contains(p.ID)).ToList();

表达式不能包含 lambda expressions

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧