質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

LINQ

LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

Q&A

解決済

1回答

404閲覧

C# / List<string[]>への要素の追加

keruuuu

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

LINQ

LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

0グッド

1クリップ

投稿2018/03/07 17:56

###実現したいこと
C#の質問です。

List<string[]>での要素の追加についてお教え願います。
下記のようにListにおいてデータ列の挿入を行いたいのです。
For文で書くことはできるのですが、LINQでの処理ができません。
(下記コードで挿入を試したしたのですが、データが縦ではなく横方向に挿入されます。)

そのため、LINQでの書き方をお教え願えないでしょうか?
よろしくお願いします。

・元データ

列1列2列3
田中一郎63
鈴木二子2
佐藤三郎3

・処理後

列1列2列3列4列5
田中一郎昭和63
鈴木二子平成2
佐藤三郎平成3

C#

1List<string[]> list; //元データ 2 3var year = list //年を配列に変換 4 .SelectMany(m => m 5 .Where((s, index) => index == 2)) 6 .ToArray(); 7 8string[] era = new string[] //和暦の配列 9 { 10 "昭和", "平成", "平成" 11 }; 12 13string[] sex = new string[] //性別の配列 14 { 15 "男", "女", "男" 16 }; 17 18var newList = list //配列を結合してList化 19 .Select(s => s 20 .Take(2) 21 .Concat(era) 22 .Concat(year) 23 .Concat(sex) 24 .ToArray()) 25 .ToList();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

SelectMany() でなく Zip() を使えばできます。

C#

1var list = new List<string[]> 2{ 3 new[]{ "田中", "一郎", "63" }, 4 new[]{ "鈴木", "二子", "2" }, 5 new[]{ "佐藤", "三郎", "3" }, 6}; 7string[] era = new[] 8{ 9 "昭和", "平成", "平成" 10}; 11 12string[] sex = new[] 13{ 14 "男", "女", "男" 15}; 16 17var newList = list 18 .Zip(era, (a, b) => a 19 .Take(2) 20 .Concat(new[] { b }) 21 .Concat(a.Skip(2))) 22 .Zip(sex, (a, b) => a 23 .Concat(new[] { b }) 24 .ToArray()) 25 .ToList();

投稿2018/03/07 21:54

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

keruuuu

2018/03/19 06:00

返信遅れまして、申し訳ありません。 教えていただいた方法にて解決いたしました。 手持ちの本では.Zipについて記載がないため、調べて使えるようになりたいと思います。 今後もよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問