我想在mvc Linq中使用In运算符。
喜欢这个sql(stud_ID是int,主键和自动增量):
select * from student where stud_ID in (1,4,6,10,5);
我怎样才能适应linq这个sql?
像
List<int> nl = new List<int>();
nl.add(1);
nl.add(4);
nl.add(6);
nl.add(10);
nl.add(5);
List<student> students = db.student.where(a => a.stud_ID.In(nl)).toList();
//this code is fitting from my mind :D
或其他方案
List<student> st = db.studentOrderBy(x => Guid.NewGuid()).Take(5); //only for create auto list student type
List<student> students = db.student.where(
a => a.stud_ID.In(st.Select(b => b.stud_ID).toList())
).toList(); //again fitting
我可以这个
List<student> students = new List<student>();
foreach(var item in nl)
{
students.add(db.student.where(a => a.stud_ID == item).First());
}
但我不想用于或foreach或do-while或while:D
答案 0 :(得分:0)
试试这个:
List<student> students = db.student.where(a => nl.Contains(a.Stud_ID)).toList();
如果学生ID出现在列表nl
中,则会检查。如果是这样,学生将返回结果。
如果我理解正确,你的第二个要求是不同的。你有两个学生集合,想知道哪些学生也在st
。
var intersectedList = students.Intersect(st);
答案 1 :(得分:-1)
试试这个
List<student> students = db.student.Where<student>(a => nl.Contains(a.stud_ID)).ToList<student>();