0

初心者向けの LINQ に関する質問があります。文字列のリストから同じタイプの 2 つのオブジェクトを作成する必要があります。テキスト「直接」と「間接」を文字列に追加し、それらを ID として使用して 2 つの一意のオブジェクトを作成する必要があります。

var vStrings = new List { "Milk", "Eggs", "Cheese" };

var vProducts = (from s in vStrings
                select new Product { ID = s + "-Direct" })
                .Union(
                 from s in vStrings
                select new Product { ID = s + "-InDirect" });

上記の例でわかるように、Union を使用して 2 つの異なるオブジェクトを作成しています。この LINQ クエリを書き直すより良い方法はありますか?

ご提案いただきありがとうございます

4

2 に答える 2

1

この方法はそれほど短くはありませんが、多くのユニオンではなくコンキャットが1つしかないなど、少し良いと思います。

var vProducts2 = (from s in vStrings
                  select s + "-Direct").Concat(
                  from s in vStrings
                  select s + "-InDirect");
于 2012-08-06T15:05:19.993 に答える
1

さらに接尾辞が必要になった場合は、次の方法が適している可能性があります。

var strings = new List<string> { "Milk", "Eggs", "Cheese" };
var suffixes = new List<string> {"-Direct", "-InDirect"};

var products = strings
    .SelectMany(_ => suffixes, (x, y) => new Product() {ID = x + y});

そして、元の文字列セットを 1 回だけ反復します。

于 2012-08-06T15:16:38.190 に答える