Linq - ListView中的选择项

时间:2016-12-01 09:29:52

标签: c# linq listview

如何选择所有关于所选项目的信息,不仅仅是第一列而是全部?

对于第一栏我只需要:

showModal(e) {
    if (!e) {
      e = window.event;
    }
    e.preventDefault();
    const tgt = e.target || e.srcElement;
    const url = tgt.getAttribute('href');
    console.log('url', url, tgt);
    const redirectTo = url.substring(url.lastIndexOf('/') + 1);
    this.setState({ show: true });
    this.context.router.transitionTo(redirectTo);
  } 

可以说下一列是:ListView.Items.AddRange(ListData .Where(i => string.IsNullOrEmpty(searchBox.Text) || i.ID.StartsWith(searchBox.Text)) .Select(c => new ListViewItem(c.ID)) .ToArray()); Name

我知道我必须使用Linq片段,它看起来像:

LastName

提前致谢!

3 个答案:

答案 0 :(得分:1)

只需在.Select()方法行中初始化所需的所有属性:

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以根据需要更改此部分。

答案 1 :(得分:1)

好吧,ListViewItem类有22个(!)constructor overloads,所以你可以使用任何支持传递string[] items的类,例如this one

.Select(c => new ListViewItem(new string[] { c.ID, c.Name, c.LastName }))

答案 2 :(得分: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变得更复杂,请考虑使用函数:

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;
}

(实际上,我会在每种情况下使用后者,它对我来说更具可读性)