이것이 가능한지 확실하지 않지만 DataRow row
이 있는데 열 이름이 "FK"로 시작하는 모든 값의 문자열 배열을 검색하려고합니다.Complex LINQ on DataRow
내가 할 수있는 일입니까, 아니면 많은 LINQ를 부탁합니까?
이것이 가능한지 확실하지 않지만 DataRow row
이 있는데 열 이름이 "FK"로 시작하는 모든 값의 문자열 배열을 검색하려고합니다.Complex LINQ on DataRow
내가 할 수있는 일입니까, 아니면 많은 LINQ를 부탁합니까?
에 대해 어떻게 : 대신지도와 같은 결과를 원하는 경우
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]));
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();
이를 사용할 수 있습니다
var values = row.Table.Columns.Cast<DataColumn>()
.Where(x => x.ColumnName.StartsWith("FK"))
.Select(x => row[x].ToString())
.ToArray();
var sa = (from DataColumn x in row.Table.Columns
where x.ColumnName.StartsWith("FK")
select row[x].ToString()).ToArray();
여기서 논리는 이름이 "FK"로 시작하는 열의 시퀀스를 가져온 다음 각 열의 행 값을 선택하고 문자열로 변환 한 다음 결과에서 배열을 만드는 것입니다. 실제 배열이 필요하지 않은 경우 .ToArray()
과 여분의 괄호 세트는 그대로 두십시오.
적어도 하나의 값이 문자열이 아니라 다른 것이 있으면 (int가 될 수도 있음) 테이크가 충돌합니다. 여기에 나와있는 답변 에서처럼 ToString 또는 Convert.ToString을 사용하면 더 안전합니다. –