如何使用linQ一次从多个列表中检索值?

时间:2010-10-19 06:15:10

标签: c# .net linq .net-3.5

我有两个列表,列表A,列表B都具有相同的值。我喜欢将这些值作为参数传递并选择返回值。所以代码

for(int i=0;i<A.count;i++)
{
list<int> temp=new list<int>();
temp.add(methodA(A[i],B[i]);
}

我怎样才能使用linq.how来做这个.net framework 3.5?

2 个答案:

答案 0 :(得分:2)

您使用的是.NET 4吗?如果是这样,Zip方法就是您想要的:

List<int> temp = A.Zip(B, (a, b) => SomeMethod(a, b)).ToList();

或使用方法组转换:

List<int> temp = A.Zip(B, SomeMethod).ToList();

如果您不使用.NET 4,MoreLINQ也可以简单地实现Zip

答案 1 :(得分:0)

试试这个

List<int> A = new List<int>() { 1, 2, 3, 4 };
List<int> B = new List<int>() { 11, 22, 33, 44 };
List<int> temp = new List<int>(); 

Enumerable.Range(0, A.Count)
.ToList()
.ForEach(i => temp.Add(methodA(A[i], B[i])));

假设我在

下修改现有代码
List<int> A = new List<int>(){1,2,3,4};
List<int> B = new List<int>(){11,22,33,44};
List<int> temp = new List<int>(); 
for(int i=0;i<A.Count;i++) temp.Add(methodA(A[i],B[i])); 

//Method for some operation
private int methodA(int val1, int val2)
{
            return val1 + val2;
}

我将输出为12,24,36,48。

运行我提供的那个将获得相同的答案。

希望这有帮助。

它在3.5框架中。