簡體   English   中英

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

[英]how do I find a list of integers in a generic list<T>

我有一個整數列表和一個以整數作為標識符的對象(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;
}
}

看起來像對我的加入:

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();

如果您實際上不需要List<T> ,但是IEnumerable<T>對您來說很好(例如,您只需對其進行一次迭代),則可以不使用ToList()調用。

假設您有可用的LINQ。 如果沒有 LINQ或C#3,則可以使用:

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

非優化版本:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM