Maniraj.M Ответов: 3

Как отфильтровать столбец из набора данных с помощью лямбда-выражения?


Всем привет,
Это моя функция, я хочу выбрать конкретный столбец из набора данных с помощью лямбда-выражения и добавить в var temp, чтобы вернуть его.Я не получаю строковый формат, но я получаю объектный формат как систему.Коллекции.Универсальный.Список`1[Система.Строка].Почему это происходит?Верен ли мой подход?Как я могу преобразовать его в строку?

var temp = новый
{
val1= dataset.Tables[1].AsEnumerable().Where(z => z.Field<int>("Id") == 1000).Select(x => x.Field<string>("Name")).ToList(),

val2 = dataset.Tables[1].AsEnumerable().Where(z => z.Field<int>("Id") == 1000).Select(x => x.Field<int>("TypeId")).ToList()

};
возвратная температура;

заранее спасибо :-)

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

Я попробовал упомянутый выше код.

3 Ответов

Рейтинг:
24

Karthik_Mahalingam

использовать Перечислимый.Первый(Метод) [^]

 var temp = new
{

    val1 = dataset.Tables[1].AsEnumerable().Where(z => z.Field<int>("Id") == 1000).Select(x => x.Field<string>("Name")).First(),
    val2 = dataset.Tables[1].AsEnumerable().Where(z => z.Field<int>("Id") == 1000).Select(x => x.Field<int>("TypeId")).First()
};</int></int></string></int>

теперь val1 будет иметь тип string и val2 как int

более эффективный способ
DataRow row = dataset.Tables[1].AsEnumerable().FirstOrDefault(z => z.Field<int>("Id") == 1000);
       if (row != null)
       {
           var temp = new   {  val1 = row.Field<string>("Name"), val2 = row.Field<string>("Name"),   };
       }</string></string></int>


Maniraj.M

Да, это сработало,но если нет строки для Id 1000, то возникает исключение.Как с этим справиться?

Karthik_Mahalingam

это сработает.
DataRow row = набор данных.Таблицы[1].Методом asenumerable().Метода firstordefault(з =&ГТ; з.Поле И Л;int> У("идентификатор") == 1000);
if (row != null)
{
var temp = new { val1 = row.Поле & lt;string> ("имя"), val2 = строка.Поле & lt;string> ("имя"), };
}

Рейтинг:
1

Shameel

Я написал это прямо из головы, не проверял, но надеюсь, вы поняли мою идею.

var temp = from t in dataset.Tables[1].Rows() 
            where Convert.ToInt32(t["Id"]) == 1000
            select new { t["Name"].ToString(), t["TypeId"].ToString() };


Рейтинг:
1

Maniraj.M

var temp = новый
{

val1 = набор данных.Таблицы[1].Методом asenumerable().Где(з =&ГТ; з.Поле И Л;int> У("идентификатор") == 1000).Выберите (x => x. Field< string> ("Name")).Метода firstordefault(),
val2 = набор данных.Таблицы[1].Методом asenumerable().Где(з =&ГТ; з.Поле И Л;int> У("идентификатор") == 1000).Выберите(х => У Х.Поле И Л;int> У("ИД типа")).Метода firstordefault()
};


VICK

Копировать вставить из раствора на Картик по.