【问题标题】:use linq in operator在运算符中使用 linq
【发布时间】:2014-03-24 08:22:15
【问题描述】:

我想要 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());
}

但我不想使用 for 或 foreach 或 do-while 或 while :D

【问题讨论】:

标签: asp.net-mvc linq in-operator


【解决方案1】:

试试这个:

List<student> students = db.student.where(a => nl.Contains(a.Stud_ID)).toList();

这会检查学生 ID 是否存在于列表 nl 中。如果是这样,学生会在结果中返回。

如果我理解正确,您的第二个要求是不同的。您有两个学生集合,想知道哪些学生也在st

var intersectedList = students.Intersect(st);

【讨论】:

    【解决方案2】:

    试试这个

    List<student> students = db.student.Where<student>(a =>  nl.Contains(a.stud_ID)).ToList<student>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      相关资源
      最近更新 更多