Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在泛型列表中查找整数列表<;T>;_C# - Fatal编程技术网

C# 如何在泛型列表中查找整数列表<;T>;

C# 如何在泛型列表中查找整数列表<;T>;,c#,C#,我有一个整数列表和一个以整数作为标识符的对象列表(Class_a)。 基于整数列表中的ID创建对象列表(类_a)的好方法是什么 我被困在: List<class_A> list = A_List.FindAll(delegate(class_A tmp) { return ids.Contains(tmp.ID); }); void main() { List<int> ids = new List<in

我有一个整数列表和一个以整数作为标识符的对象列表(Class_a)。 基于整数列表中的ID创建对象列表(类_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;
}
}
List List=A\u List.FindAll(委托(类\u A tmp)
{返回ID.Contains(tmp.ID);};
void main()
{
列表ID=新列表();
添加(1);
添加(3);
增加(5);
列表A_List=新列表();
添加(新类别A(1,“一”);
添加(新的类别A(2,“两”);
添加(新类别A(3,“三”);
添加(新的类别A(4,“四”);
添加(新的类别A(7,“七”);
}
公营甲级
{
公共int ID{get;set;}
公共字符串文本{get;set;}
公共类_A(整数id,字符串文本)
{
文本=文本;
ID=ID;
}
}

对我来说就像是一种加入:

var query = A_List.Join(ids, x => x.ID, y => y, (x, y) => x)
                  .ToList();
或以查询表达式格式:

var query = (from a in A_List
             join id in ids on a.ID equals id
             select a).ToList();
如果您实际上不需要
列表
,但是
IEnumerable
对您来说很好(例如,您只需对它迭代一次),只需停止
ToList()
调用

这是假设您有LINQ可用。如果您没有LINQ或C#3,您可以使用:

List<A> matches = A_List.FindAll(delegate(A a) { return ids.Contains(a.ID); });
List matches=A_List.FindAll(委托(A){返回ID.Contains(A.ID);});
非优化版本:

var instancesOfAInList = ids.Where(id => A_List.Any(a => a.ID == id));
A_List.Where(c => ids.Contains(c.ID));