如何在C#中将列标题添加到ListView

Tho*_*eld 7 c# linq lambda listview

我有一个没有列的ListView控件.

列表

List<String> MyList=new List<string>();
Run Code Online (Sandbox Code Playgroud)

我需要为每个列表MyList项创建列,ListView并为序列号创建另一列.

例如,如果MyList包含"A", "B" ,"C"

然后列表视图就像

替代文字

我知道我们可以使用forforeach循环使用

listView1.Columns.Add("S.No")
for(int i=0;i<MyList.Count;i++)
   {
      listView1.Columns.Add(MyList[i])
   }
Run Code Online (Sandbox Code Playgroud)

但有没有办法使用LINQLAMBDA Expression

Ali*_*tad 5

MyList.ForEach(name => listView1.Columns.Add(name));
Run Code Online (Sandbox Code Playgroud)

  • 您不必使用Linq添加S.No.Linq只是编写使代码可读的循环的捷径,仅此而已.如果必须,使用列表的InsertAt将S.No添加为列表中的第一项. (3认同)

Yon*_*ona 5

这里有 4 个选项
,至少还有 10 种方法可以做到这一点,

var myList = new List<string>() { "A", "B", "C" };

// 1: Modify original list and use List<>.ForEach()
myList.Insert(0, "S. No");
myList.ForEach(x => lisView.Columns.Add(x));

// 2: Add first column and use List<>.ForEach()
listView.Columns.Add("S. No");
myList.ForEach(x => listView.Columns.Add(x));

// 3: Don't modify original list
(new[] { "S. No" }).Concat(myList).ToList()
    .ForEach(x => listView.Columns.Add(x));

// 4: Create ColumnHeader[] with Linq and use ListView.Columns.AddRange()
var columns = (new[] { "S. No"}).Concat(myList)
    .Select(x => new ColumnHeader { Text = x }).ToArray();
listView.Columns.AddRange(columns);
Run Code Online (Sandbox Code Playgroud)

您是否考虑过KISS选项?