0

次のデータを含む 2 つのリスト (リスト) があります。

リスト 1

James
Jack
Laura
Harry

リスト 2

Jeffery
Peters
Smith

Enumerable Join を使用して Join を実行し、次のことを行うことは可能ですか?

James Jeffery
James Peters
James Smith
Jack Jeffery
Jack Peters
Jack Smith
Laura Jeffery
Laura Peters
Laura Smith
Harry Jeffery
Harry Peters
Harry Smith
Harry Jeffery

これのJoinの種類は?

4

5 に答える 5

2

これはクロス結合です:

List<string> textLines1 = new List<string>() {
    "Kames", "Jack", "Laura", "Harry"
};
List<string> textLines2 = new List<string>() {
    "Jeffery", "Peters", "Smith"
};

var query = from t1 in textLines1
            from t2 in textLines2
            select string.Format("{0} {1}", t1, t2);

var results = query.ToList();

あなたが期待するものを返します。

メソッドベースのクエリを使用して行うこともできます。

var query2 = textLines1.SelectMany(t1 => textLines2, (t1, t2) => string.Format("{0} {1}", t1, t2));

var results2 = query2.ToList();
于 2013-03-12T11:06:56.843 に答える
1

Linq では次のようになります。

List<string> TabOne = new List<string>() { "Kames", "Jack", "Laura", "Harry" };
List<string> TabTwo = new List<string>() { "Jeffery", "Peters", "Smith" }; 

var combo = from p in TabOne
        from c in TabTwo
        select new
        {
            Name = p,
            SurName = c
        };

クロス結合といいます。

于 2013-03-12T11:06:37.780 に答える
0

これはとしても知られてCartesian Productおり、Ericにはそれに関するブログ投稿があります。

于 2013-03-12T11:10:16.933 に答える
0

あなたはこの方法を試すことができます:

var result = list1.SelectMany(i1 => list2.Select(i2 => i1 + " " + i2));

例 :

class Program
{
    public static void Main()
    {
        string[] list1 = new[] { "James", "Jack", "Laura", "Harry" };
        string[] list2 = new[] { "Jeffery", "Peters", "Smith" };
        var result = list1.SelectMany(i1 => list2.Select(i2 => i1 + " " + i2));

        foreach (string s in result)
        {
            Console.WriteLine(s);
        }
    }
}

アプリの出力:

James Jeffery
James Peters
James Smith
Jack Jeffery
Jack Peters
Jack Smith
Laura Jeffery
Laura Peters
Laura Smith
Harry Jeffery
Harry Peters
Harry Smith
于 2013-03-12T11:11:41.767 に答える
0
var l1 = new []{ "James", "Jack", "Laura", "Harry" };
var l2 = new []{ "Jeffery", "Peters", "Smith" };

var result = from i1 in l1
             from i2 in l2
             select i1 + " " + i2;
于 2013-03-12T11:07:31.680 に答える