C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: Linqで2次元配列を作る


(過去ログ 139 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■81916 / inTopicNo.1)  Linqで2次元配列を作る
  
□投稿者/ ヒデオ (1回)-(2016/11/23(Wed) 07:42:17)

分類:[C#] 

C#で2次元配列を作る方法はありますか?
最近Linqの勉強を始めました。ふとできるかな?と思ってやってみたのですが、できなかったので方法があるのか気になってしまったので質問させていただきます。

int[] array = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
int[,] array2 = new int[3, 5];

arrayの配列をarray2の2次元配列にLinqで代入することはできますか?今の私だと二重ループを回して代入してしまうのでもう少しモダンな書き方があればと思ってます。
なるべくint型が望ましいのですが、arrayがvarになってしまっても構いません。

よろしくお願いします。
引用返信 編集キー/
■81917 / inTopicNo.2)  Re[1]: Linqで2次元配列を作る
□投稿者/ 魔界の仮面弁士 (978回)-(2016/11/23(Wed) 09:45:00)
2016/11/23(Wed) 09:55:37 編集(投稿者)

No81916 (ヒデオ さん) に返信
> C#で2次元配列を作る方法はありますか?

int[,] ary = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };


> 最近Linqの勉強を始めました。

二次元配列に対する、どのような LINQ 処理を求めているのかにもよりますが、
二次元配列は IEnumerable<> を実装していないので、
System.Linq.Enumerable 系のものは殆ど使えません。

二次元配列に対しても、.Cast<> や .OfType<> などを使えますが、
一次元配列に比べると、事前に用意されている拡張メソッドは少ないです。


二次元配列を使うことが多いのであれば、Index を付与して
平坦化するような拡張メソッドを用意しておくと便利かと思います。

http://blog.xin9le.net/entry/2016/02/17/003605
http://yasuand.hatenablog.com/entry/2014/02/01/165637
引用返信 編集キー/
■81918 / inTopicNo.3)  Re[1]: Linqで2次元配列を作る
□投稿者/ Hongliang (472回)-(2016/11/23(Wed) 09:56:45)
そもそも多次元配列自体がモダンでは無いと判断されているようで、Linqと多次元配列はほとんど噛み合わないです。

> なるべくint型が望ましいのですが、arrayがvarになってしまっても構いません。
varは型ではありません。単なる型名の省略記法です。
var array = new int[] { 1, 2, 3 };
とVisual Studioで書いた時に、varのところにマウスオーバーすればarrayの型がツールチップで表示されます。
引用返信 編集キー/
■81919 / inTopicNo.4)  Re[2]: Linqで2次元配列を作る
□投稿者/ ヒデオ (2回)-(2016/11/23(Wed) 20:35:52)
ご意見ありがとうございました。

自分ではToArrayを使って配列に3回変える方法で決着させました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -