0

ループを使用してこれを非常に簡単に達成できることはわかっていますが、私の質問に対して最も効率的な解決策を探しています。

(文字列の)2つのリストがあるとします。

Dim lst1 as new list(of string)
Dim lst2 as new list(of string)

また、両方に同じ数の要素があります。次に例を示します。

Lst1:    Lst2:
a        abc1
a        abc2
b        abc3
a        abc4
b        abc5
c        abc6
a        abc7
c        abc8

ここで、たとえば、Lst1の対応する要素が「a」であるlst2のすべての要素を取得しようとしています。

したがって、私の最終結果は次のようになります。

Lst3 = Items from Lst2 where corresponding Items in Lst1 = "a"
Lst3 = {abc1, abc2, abc4, abc7}

繰り返しになりますが、これはループを使用すると非常に簡単に実行できることはわかっていますが、Linqを介してこれを実行する方法を考えています。

ありがとう!!!

4

3 に答える 3

2
List<string> Lst1 = new List<string> { "a", "a", "b", "a", "b", "c", "a", "c"};
List<string> Lst2 = new List<string> { "abc1", "abc2", "abc3", "abc4", "abc5", "abc6", "abc7", "abc8" };

var Lst3 = Lst2.Where((s, i) => Lst1[i] == "a").ToList();
于 2012-10-24T16:50:06.847 に答える
1

これを試して -

List<String> Lst3 = Lst2.Where((item, index) =>
                              Lst1[index].Equals("a")).ToList();
于 2012-10-24T16:49:25.007 に答える
0

より一般的な方法で、次のようなことを試すことができます。

C#

List<String> lst3 = lst2.Where((item, index) => 
                               item.StartsWith(lst1.Distinct()[index])).ToList();

VB

Dim lst3 As List(Of [String]) = lst2.Where(Function(item, index)
                                item.StartsWith(lst1.Distinct()(index))).ToList()

これがお役に立てば幸いです!!

于 2012-10-24T16:55:09.920 に答える