2016-12-01 16 views
0

どのようにして最初の列だけでなく、すべての情報を選択できますか? NameLastNameLinq - ListViewの選択項目

私はのように見えるのLINQのセグメントを使用する必要があることを知っている:

(...).Select(c => { }) 

ListView.Items.AddRange(ListData 
    .Where(i => string.IsNullOrEmpty(searchBox.Text) || i.ID.StartsWith(searchBox.Text)) 
    .Select(c => new ListViewItem(c.ID)) 
    .ToArray()); 

は、次の列があると言うことができます:私はちょうど必要がある最初の列のために

ありがとうございます!

+0

削除しばらくの間、LINQフィールドから、そして自分自身に答えてください。 "ListViewItemをListViewに追加するにはどうすればよいですか?Column nameとLastNameにも値を設定しますか?" –

+0

さて、最初の列は項目で、次の列はこの項目の下位項目です。 – yerpy

答えて

1

あなたはの配列を受け入れるのListViewItemのctorのを使用することができます文字列(最初の後の要素がサブ項目がどこにあるか)

は、あなたのクラスを想定するとは性質を有するLastNameName

ListView.Items.AddRange(ListData.Where(i =>  
      string.IsNullOrEmpty(searchBox.Text) 
      || i.ID.StartsWith(searchBox.Text)) 
      .Select(c => new ListViewItem // this part 
       (
       new string[]{c.ID, c.Name, c.LastName} 
       )).ToArray()); 

単一のListViewItemの作成はfuncionの使用を検討して、より複雑な取得する場合:

ListView.Items.AddRange(ListData.Where(i =>  
      string.IsNullOrEmpty(searchBox.Text) 
      || i.ID.StartsWith(searchBox.Text)) 
      .Select(c => CreateListViewItemFromElement(c)).ToArray()); 

private ListViewItem CreateListViewItemFromElement(MyClass element) 
{ 
// handle the element to create a "complete" ListViewItem with subitems 
    ListViewItem item = new ListViewItem(c.ID); 
    .... 
    return item; 
} 

(実際には、私はすべての場合には、後者を使用することになり、それは私にははるかに読みやすいです)

+0

ありがとう!私はこれを将来的にやるつもりです! – yerpy

1

はちょうどあなたが.Select()メソッドラインでこれを必要とするすべてのプロパティINIT:

ListView.Items.AddRange(ListData.Where(i =>  
      string.IsNullOrEmpty(searchBox.Text) 
      || i.ID.StartsWith(searchBox.Text)) 
      .Select(c => new ListViewItem // this part 
       { 
        Name = c.ID.ToString(), 
        Text = c.Name + " " + c.LastName 
       }).ToArray()); 

Mabyあなたは、異なる特性を埋めるためにしたいので、あなたが望むように、この部分を変更するfreeeを埋めます。

+0

しかし、私は文字列としてではなく、正しい列の各値を必要とします。 – yerpy

1

まあ、ListViewItemクラスが22を持っているconstructor overloadsを、インスタンスthis oneため、string[] itemsを渡すサポートするそれらのいずれかを使用することができるように(!):

.Select(c => new ListViewItem(new string[] { c.ID, c.Name, c.LastName })) 
関連する問題