[英]How to get the columns index from datatable which column name contains like 'ColumnName'
我有一個包含動態創建的列的數據表:
Name | Role | Comm w1 | Role | Comm w2 | .... | Total Comm |
我想獲取包含Comm
所有列索引。
預期的結果應該是:
2
4
...
您可以使用 LINQ 輕松完成此操作。
首先,我們需要將 Columns 轉換為 DataColumn 因為 LINQ 需要它是IEnumerable<DataColumn>
但 Columns 是DataColumnCollection
。 然后將列限制為包含“Comm”的列,然后選擇每列的序數,然后將其設為列表。
List<int> columnIndexes = dt.Columns.Cast<DataColumn>()
.Where(column => column.ColumnName.Contains("Comm"))
.Select(column => column.Ordinal).ToList();
您的問題不清楚您想要的輸出是什么,您是只想打印列的位置以進行篩選,還是以某種方式存儲它們以備后用。
此外,這是一個非常簡單的解決方案.. 如果不是這樣,那么我就不會參與.. 所以為了將來參考,請提供您已經嘗試過的內容以及您所期待的內容。 它可以幫助所有參與嘗試幫助您找到解決方案的人。 如果您遇到任何問題,請參閱“如何提出一個好問題” 。
using System;
using System.Data;
using System.Xml;
public class Program
{
public static void Main()
{
var dt = new DataTable { Columns = { "Name", "Role", "Comm w1", "Comm w2", "Total Comm"}};
foreach(DataColumn column in dt.Columns){
if(column.ColumnName.Contains("Comm")){
Console.WriteLine(column.Ordinal.ToString());
}
}
}
}
// Output:
// 2
// 3
// 4
如果這有幫助,請告訴我。
下面應該做你需要的
foreach (DataColumn col in dataTable.Columns)
{
if (col.ColumnName.Contains("Comm"))
{
var index = col.Ordinal;
}
}
但如前所述,最好先嘗試一些東西。
其他答案是正確的,它會讓你得到你所要求的,但我不認為他們如何使用它們是完全正確的。 我會做這樣的事情:
List<int> indexes = new List<int>();
foreach (DataColumn column in dataTable.Columns)
{
if (column.ColumnName.Contains("Comm"))
{
indexes.Add(column.Ordinal);
}
}
通過這種方式,您可以在之后隨意使用索引列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.