不确定这是否可行,但我有一个DataRow row
,我想要检索列名称以“FK”开头的所有值的字符串数组。
这是可行的还是我要求LINQ的大部分内容?
答案 0 :(得分:4)
怎么样:
DataRow row = ...
var values = from DataColumn column in row.Table.Columns
where column.ColumnName.StartsWith("FK")
select Convert.ToString(row[column]);
var valueArray = values.ToArray();
如果您希望将结果改为地图,则可以执行以下操作:
var result = row.Table
.Columns
.Cast<DataColumn>()
.Where(column => column.ColumnName.StartsWith("FK"))
.ToDictionary(column => column.ColumnName,
column => Convert.ToString(row[column]));
答案 1 :(得分:2)
DataTable dt = new System.Data.DataTable();
dt.Columns.Add("FKStuff");
dt.Columns.Add("OtherStuff");
dt.Columns.Add("FKAndMoreStuff");
var row = dt.Rows.Add("ABC", "DEF", "GHI");
var vals = dt.Columns.Cast<DataColumn>().Where(c => c.ColumnName.StartsWith("FK")).Select(col => row[col]).ToArray();
答案 2 :(得分:2)
你可以用这个:
var values = row.Table.Columns.Cast<DataColumn>()
.Where(x => x.ColumnName.StartsWith("FK"))
.Select(x => row[x].ToString())
.ToArray();
答案 3 :(得分:2)
var sa = (from DataColumn x in row.Table.Columns
where x.ColumnName.StartsWith("FK")
select row[x].ToString()).ToArray();
这里的逻辑是获取名称以“FK”开头的那些列的序列,然后对于每个列,选择该列的行值,将其转换为字符串,然后从结果中生成一个数组。如果您不需要实际的数组,请不要使用.ToArray()
和额外的括号。