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

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

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

Re[3]: Linqで添字を処理する方法


(過去ログ 141 を表示中)

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

■82554 / inTopicNo.1)  Linqで添字を処理する方法
  
□投稿者/ C#ビギナー (1回)-(2017/01/14(Sat) 22:48:41)

分類:[C#] 

C#初心者ですが、以下のようなソースコードをLinqで、
どのように記述すれば良いか不明につき、回答頂ければ幸いです。

可能であれば、メソッド構文とクエリ式の両方での記述方式を回答頂けると助かります。

よろしくお願いします。

【開発環境】
Windows7
C#
.NET 3.5

【ソースコード(一部抜粋になります)】
var arr_no = new[] {1,3};
string [] arr_bar_data = new string[3] {"いち","に","さん"}; 
string str_data = null;
                               
foreach (int int_no in arr_no)
{
    if (String.IsNullOrEmpty(str_data))
    {
        str_data = arr_bar_data[int_no];
    }
    else
    {
        str_data = str_data + "-" + arr_bar_data[int_no - 1];
    }
}

引用返信 編集キー/
■82555 / inTopicNo.2)  Re[1]: Linqで添字を処理する方法
□投稿者/ Azulean (769回)-(2017/01/15(Sun) 00:04:06)
2017/01/15(Sun) 00:24:15 編集(投稿者)

No82554 (C#ビギナー さん) に返信
> str_data = arr_bar_data[int_no];
(略)
> str_data = str_data + "-" + arr_bar_data[int_no - 1];

arr_bar_data の添え字が int_no そのままと、1 引いたものが混在していますが、合っていますか?
なんとなく、書き間違えているのではないかと感じたためです。

----
仮に、添え字そのまま使っていいなら、メソッドを使う書き方でこうなるかなぁ。

str_data = string.Join("-", arr_no.Select(no => arr_bar_data[no]).ToArray());

// Linq で後ろにつなげるスタイルにこだわるよりも、既存の string.Join を使った方が簡潔と考えています。
引用返信 編集キー/
■82566 / inTopicNo.3)  Re[2]: Linqで添字を処理する方法
□投稿者/ C#ビギナー (3回)-(2017/01/15(Sun) 17:18:43)
No82555 (Azulean さん) に返信

返信ありがとうございます。
ご指摘頂いた通り、以下記載は間違いです。
>> str_data = arr_bar_data[int_no];

正しくは以下表記になります。
>> str_data = arr_bar_data[int_no - 1];>

またご案内頂いた通り、以下記述にて実行したところ、期待した結果を得る事ができました。
> str_data = string.Join("-", arr_no.Select(no => arr_bar_data[no]).ToArray());

メソッド構文は案内頂いた内容で解決しましたので、
クエリ式での回答も後学のために回答頂ければ幸いです。
またメソッド構文で別解がある場合も回答頂けると助かります。

よろしくお願いします。
引用返信 編集キー/
■82567 / inTopicNo.4)  Re[3]: Linqで添字を処理する方法
□投稿者/ Azulean (771回)-(2017/01/15(Sun) 17:48:14)
こうですかね。
string str_data = string.Join("-", (from no in arr_no select arr_bar_data[no - 1]).ToArray());
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -