-2

mvc Linq で In 演算子が必要です。

このSQLのように(stud_IDはint、主キー、自動インクリメント):

select * from student where stud_ID in (1,4,6,10,5);

このSQLをlinqに適応させるにはどうすればよいですか?

お気に入り

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

4

2 に答える 2

0

これを試して:

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

これは、学生 ID が List に存在するかどうかを確認しますnl。その場合、学生が結果に返されます。

私が正しく理解していれば、2番目の要件は異なります。学生のコレクションが 2 つあり、どの学生が にも所属しているかを知りたいとしstます。

var intersectedList = students.Intersect(st);
于 2014-03-24T09:26:45.020 に答える
-1

これを試して

List<student> students = db.student.Where<student>(a =>  nl.Contains(a.stud_ID)).ToList<student>();
于 2014-03-24T12:58:18.910 に答える