我需要知道LINQ查询中匹配项的索引。当我尝试获取索引时,我在join中遇到错误。我的代码如下所示,我期待第一个匹配为(2,0),第二个匹配为(3,1)。我是新的LINQ和建议的欢迎。
public class Test
{
public int a;
public string b;
public Test(int x, string y) { a = x; b = y; }
}
List<Test> a1= new List<Test>();
List<Test> b1= new List<Test>();
a1.Add(new Test(1, "test1-a"));
a1.Add(new Test(2, "test2-a"));
a1.Add(new Test(3, "test3-a"));
a1.Add(new Test(4, "test4-a"));
b1.Add(new Test(3, "test3-b"));
b1.Add(new Test(4, "test4-b"));
b1.Add(new Test(5, "test5-b"));
b1.Add(new Test(6, "test6-b"));
var x = from m in a1
join n in b1
on m.a equals n.a
select((index) => new { index, n.b });
2条答案
按热度按时间mklgxw1f1#
您可以使用
Select
方法的重载,该方法也提供索引。但你需要在加入收藏之前做到这一点。所以它应该看起来像这样:Fiddle
4ioopgfo2#
你可以使用重载的
Select
版本(它提供了item
sindex
),然后是Join
:输出: