如何在通用列表<T>中找到整数列表

Bra*_*rad 0 c#

我有一个整数列表和一个对象列表(Class_A),其中整数作为标识符.什么是基于整数列表中的id创建对象列表(Class_A)的好方法.

我被困在:

List<class_A> list =  A_List.FindAll(delegate(class_A tmp) 
                      { return ids.Contains(tmp.ID); });


 void main()
  {
  List<int> ids = new List<int>();
  ids.Add(1);
  ids.Add(3);
  ids.Add(5);

  List<class_A> A_List = new List<class_A>();
  A_List.Add(new class_A(1, "one"));
  A_List.Add(new class_A(2, "two"));
  A_List.Add(new class_A(3, "three"));
  A_List.Add(new class_A(4, "four"));
  A_List.Add(new class_A(7, "seven"));
}

 public class class_A
 {
public int ID { get; set; }
public string Text { get; set; }
public class_A( int id,string text)
{
  Text = text;
  ID = id;
}
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

看起来像是对我的加入:

var query = A_List.Join(ids, x => x.ID, y => y, (x, y) => x)
                  .ToList();
Run Code Online (Sandbox Code Playgroud)

或者以查询表达式格式:

var query = (from a in A_List
             join id in ids on a.ID equals id
             select a).ToList();
Run Code Online (Sandbox Code Playgroud)

如果你实际上并不需要a List<T>,但是IEnumerable<T>对你来说很好(例如你只是迭代一次),就不要再ToList()打电话了.

假设你有LINQ可用.如果您没有 LINQ或C#3,您可以使用:

List<A> matches = A_List.FindAll(delegate(A a) { return ids.Contains(a.ID); });
Run Code Online (Sandbox Code Playgroud)