gani7787 Ответов: 1

LINQ - как найти конкретный столбец, если мое имя столбца в качестве столбца параметра списка


Привет ,

Я передаю значение списка в datatable.

Я хочу сначала найти столбец, а затем проверить, существует ли значение для этих столбцов или нет.

Я хочу написать LINQ-запрос, как логическое значение ИСТИНА/ложь

например,

string str ABSCHECK = ABS A#ABS B // input value

string[] words1 = str.Split('#'); //Splitting the values

words1[0] ABS A //list


[1] ABS B

Вышеприведенные два значения - это имя столбца, и я хочу проверить это в приведенной ниже таблице.

DTTABLE :

АБС-А(МН) АБС-А(МХ) АБС Б(МН) АБС Б(МХ) С АБС(МИННЕСОТА) АБС С(МХ)
100 100 100 100 100 100 100
Для ABS а ==&ГТ; сопоставления двух столбцов и значения(например, АБС-а(МН) и АБС-а(МХ))

Для ABS B == & gt; существует соответствие двух столбцов и значений (например, ABS B(MN) и ABS B(MX))

Поэтому я хочу, чтобы результат был истинным.

если ничего не совпадает, это означает (столбец не идентифицирован и значение отсутствует), что возвращает false.

Как написать LINQ..?

ниже приведен мой запрос

string str ABSCHECK = ABS A#ABS B // input value

string[] words1 = str.Split('#'); //Splitting the values

bool results = (from r in DTTABLE.AsEnumerable()
                           select r.Field<string>(words1.ToList())); // to find out columns and value


но не работает...?

Что я уже пробовал:

string str ABSCHECK = ABS A#ABS B // input value

string[] words1 = str.Split('#'); //Splitting the values

bool results = (from r in DTTABLE.AsEnumerable()
                           select r.Field<string>(words1.ToList())); // to find out columns and value

but not working..?

1 Ответов

Рейтинг:
1

Maciej Los

Не уверен, что хорошо вас понимаю, но ... .. Если вы хотите получить результат с одним столбцом, вам нужно перебрать имена столбцов, которые вы бы разделили из строки. Взгляните на пример:

DataTable dt = new DataTable();

dt.Columns.Add(new DataColumn("ABS A", typeof(string)));
dt.Columns.Add(new DataColumn("ABS B", typeof(string)));

dt.Rows.Add(new object[]{"A", "1"});
dt.Rows.Add(new object[]{"B", "2"});
dt.Rows.Add(new object[]{"C", "3"});
dt.Rows.Add(new object[]{"D", "4"});
dt.Rows.Add(new object[]{"E", "5"});

string str = "ABS A#ABS B"; // input value
 
List<string> cols = str.Split(new string[]{"#"}, StringSplitOptions.RemoveEmptyEntries).ToList(); //Splitting the values

foreach(string c in cols)
{
	var result = dt.AsEnumerable()
              .Select(r=> r.Field<string>(c))
			  .ToList();
	//result.Dump(); //LinqPad option to display values stored in a result variable
}