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

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

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

C# Listに格納したデータを取り出す方法について

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

■90548 / inTopicNo.1)  C# Listに格納したデータを取り出す方法について
  
□投稿者/ たいへ (1回)-(2019/03/20(Wed) 15:53:02)

分類:[C#] 

Listに格納したデータを取り出す方法について教えていただきたいところがあります。
Excelからループ処理によりListへデータを格納したのですが、
格納したデータの取り出す方法がわからない状態です。

namespace WpfApp
{
public partial class MainWindow : Window
{
private List<AvailsItem> availsList = null;

public MainWindow()
{
InitializeComponent();
}

private void Button_Click(object sender, RoutedEventArgs e)
{

// Excelファイルの読み込み
using (var book1 = new XLWorkbook(@"ファイルパス"))
{
// シートの読み込み
var moviesSheet = book1.Worksheet("Movies");

this.availsList = new List<AvailsItem>();


// 指定した列のループ取得[
for (int i = 5; true; i++)
{
var partnerName = moviesSheet.Cell(i, "A").Value.ToString();

// 終了行判定
if (string.IsNullOrEmpty(partnerName))
{
break;
}
AvailsItem availsItem = new AvailsItem();
// 列ごとに取得
availsItem.partnerName = partnerName;
availsItem.contentType = moviesSheet.Cell(i, "D").Value.ToString();
availsItem.title = moviesSheet.Cell(i, "F").Value.ToString();
availsItem.sdEstStart = moviesSheet.Cell(i, "L").Value.ToString();

// 配列に追加する
availsList.Add(availsItem);

// availsListから射影
var titleList = availsList.Select( a => a.title).ToArray();

Console.WriteLine(titleList[i]);
}

}
}
}


availsList.Add(availsItem);
にて配列に格納したところまでは理解できたのですが、

var titleList = availsList.Select( a => a.title).ToArray();
これを使用してどのようにavailsListのtitleデータをひとつずつ取り出せばよいかわからない状態です。
どうかお教えいただけたら幸いです。
引用返信 編集キー/
■90549 / inTopicNo.2)  Re[1]: C# Listに格納したデータを取り出す方法について
□投稿者/ Hongliang (771回)-(2019/03/20(Wed) 16:07:34)
> // availsListから射影
> var titleList = availsList.Select( a => a.title).ToArray();
> Console.WriteLine(titleList[i]);

ここでSelectする意味がありません。
今回読み取ったタイトルはavailsItem.titleで取得できます。

> var titleList = availsList.Select( a => a.title).ToArray();
> これを使用してどのようにavailsListのtitleデータをひとつずつ取り出せば
> よいかわからない状態です。

何をやりたいのかが分かりません。
「titleをひとつずつ取り出」すことができたとして、
その取り出したtitle(のコレクション)をどうしたいのでしょうか?
例えば、それぞれをコンボボックスのアイテムに設定していきたいとか。

引用返信 編集キー/
■90550 / inTopicNo.3)  Re[2]: C# Listに格納したデータを取り出す方法について
□投稿者/ たいへ (2回)-(2019/03/20(Wed) 16:25:47)
2019/03/20(Wed) 16:27:30 編集(投稿者)
2019/03/20(Wed) 16:26:33 編集(投稿者)

No90549 (Hongliang さん) に返信
>
> 何をやりたいのかが分かりません。
> 「titleをひとつずつ取り出」すことができたとして、
> その取り出したtitle(のコレクション)をどうしたいのでしょうか?
> 例えば、それぞれをコンボボックスのアイテムに設定していきたいとか。

言葉足らずで申し訳ありません。
最終的には別のExcelシートの列毎に取得したデータを種類別に書き出したいと思っています。
例えば
・エクセルシート@のF列からtitleデータを全て取得。
・エクセルシートAの指定したG列orH列に取得データしたを一つずつ条件分岐させ区別して順番に全て書き出す
というような具合です。
引用返信 編集キー/
■90552 / inTopicNo.4)  Re[3]: C# Listに格納したデータを取り出す方法について
□投稿者/ Hongliang (772回)-(2019/03/20(Wed) 16:49:48)
・まず、Excelからすべての必要データを読み込み、availsListへのAddを済ませる。
・書き込む際に、availsList.Select(略).ToArray()でタイトルの配列を得る。
 その後、この配列をforやforeachでループして、1行ずつExcelセルに設定する。

言語化してもそのまんまなだけになりましたが、どこにつまづきましたか?
引用返信 編集キー/
■90554 / inTopicNo.5)  Re[1]: C# Listに格納したデータを取り出す方法について
□投稿者/ PANG2 (271回)-(2019/03/20(Wed) 18:09:16)
No90548 (たいへ さん) に返信

> var titleList = availsList.Select( a => a.title).ToArray();
> これを使用してどのようにavailsListのtitleデータをひとつずつ取り出せばよいかわからない状態です。
> どうかお教えいただけたら幸いです。

型を省略せずに書くと可読性が上がります。
string[] titleList = availsList.Select(a => a.title).ToArray();

引用返信 編集キー/
■90555 / inTopicNo.6)  Re[1]: C# Listに格納したデータを取り出す方法について
□投稿者/ WebSurfer (1792回)-(2019/03/20(Wed) 18:15:47)
No90548 (たいへ さん) に返信

Teratail の以下のスレッドの話の続きですよね。

C# ループ処理で受け取ったデータをループ処理で配列へ格納したい
https://teratail.com/questions/180138

それは質問の一番最初に書いておくべきことだと思いますけど。

Teratail でもらったアドバイスは生かせてないようね気がしますが、いかがでしょう?

引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ