6

クラスがあります

Public class Student
{
  int id;
  int rollNum;
  String Name;
}

方法

Public List<Student> GetAllStudents()
{
  var studentList = GetMeAll(); // Simple select * query to get all students
  //unfortunately i can't make changes in this method so have to write a linq query to       //filter data.
  //getting int array ids correctly from some method
   var filterList = FilterStudentsByID(ids,StudentList);
}

int配列を入力として受け取り、リストを返すメソッドを作成したい

Public List<Student> FilterStudentsByID(int[] ids,List<student> studentList)
{
  //There should be a linq query , but I am new to linq so don't know how to write this.
  Var list = from  studentList in ..... don't know much;
}

クエリの作成に役立つ情報。Answersをありがとうございました、私もレコードの大きなリストでパフォーマンスを維持することを探していますか?クエリの簡単な説明が内部で機能することを私に追加できれば素晴らしいでしょう??

4

3 に答える 3

10

idsIDが配列に存在するリストからそれらの学生を検索する場合は、次のようにします。

var list = from s in stundentList
           where ids.Contains(s.ID)
           select s;
于 2013-03-13T09:00:30.280 に答える
5

試す

Var list = studentList.Where(s=>ids.Contains(s.id)).ToList();
于 2013-03-13T09:01:57.683 に答える
1

すでに与えられた答えは十分に速いと思いますが、テスト後に遅すぎることがわかった場合に備えて、検索を行う前に学生リストを辞書に変換してみることができます。

ほとんどの場合、かなり遅くなる可能性があるため、これは慎重なタイミングテストの後でのみ使用する必要があります。

public static List<Student> FilteredStudents(int[] targetIds)
{
    var allStudents = GetAllStudents().ToDictionary(student => student.id);
    var result = new List<Student>();

    foreach (int id in targetIds)
    {
        Student student;

        if (allStudents.TryGetValue(id, out student))
        {
            result.Add(student);
        }
    }

    return result;
}
于 2013-03-13T09:27:07.693 に答える