SnvMohan Ответов: 5

Отфильтруйте данные в наборе данных и вернитесь к другому набору данных


У меня есть пользовательские данные в наборе данных dataset1, и имя dataset1 иметь следующие поля в таблице, имя,Reg_Date,CityID,идентификатор locationId,LocationName,Reg_For. В коде позади меня нужно взять userdetails, зависящие от их местоположения от dataset1 и отфильтрованные данные, хранящиеся в dataset2.. Кто-нибудь даст предложения плз?

SnvMohan

DataRow[] rows = Dataset1.Таблицы[0].Выберите("Location_Name в (" + Selected_locations + ")");
Невров Объекта Datarow ;

foreach (DataRow row in rows)
{
Невров = NewTB.Невров();
Невров["наименование"] = строка["имя"];
NewRow ["Reg_Date"] = строка ["Reg_Date"];
NewRow ["Location_Name"] = строка ["Location_Name"];
NewRow ["CityID"] = row ["CityID"];
Невров["идентификатор locationId"] = строка["идентификатор locationId"];
NewRow ["Reg_For"] = строка ["Reg_For"];
NewTB.Строк.Добавить(Невров);
}

у меня есть более чем одно место для поиска. Я могу использовать этот код..но есть ошибка в этом запросе select….Как это решить?

Member 3356170

DataRow[] rows = Dataset1.Таблицы[0].Выберите("Location_Name в (" + Selected_locations + ")");
Невров Объекта Datarow ;

NewTB.Столбцы.Add ("Name", typeof (string));
NewTB.Столбцы.Добавить ("Reg_Date", typeof(DateTime));
NewTB.Столбцы.Add ("Location_Name", typeof (string));
NewTB.Столбцы.Add ("CityID", typeof (string));
NewTB.Столбцы.Add ("LocationID", typeof (string));
NewTB.Столбцы.Add ("Reg_For", typeof (string));

foreach (DataRow row in rows)
{
Невров = NewTB.Невров();
Невров["наименование"] = строка["имя"];
NewRow ["Reg_Date"] = строка ["Reg_Date"];
NewRow ["Location_Name"] = строка ["Location_Name"];
NewRow ["CityID"] = row ["CityID"];
Невров["идентификатор locationId"] = строка["идентификатор locationId"];
NewRow ["Reg_For"] = строка ["Reg_For"];
NewTB.Строк.Добавить(Невров);
}

5 Ответов

Рейтинг:
42

prashant patil 4987

Для фильтрации данных в наборе данных используйте Выбрать Метод фильтрации данных, он возвращает потоки данных.
Теперь вы можете добавить эти потоки данных в новый набор данных.


Рейтинг:
2

C@dER@j

Это было бы легко, если вы будете использовать это.

DataTable table1 = new DataTable("Registration");
      table1.Columns.Add("Location");
      table1.Columns.Add("Id");
      table1.Rows.Add("Loc1", 1);
      table1.Rows.Add("Loc2", 2);
      table1.Rows.Add("Loc3", 3);
      table1.Rows.Add("Loc1", 4);
      table1.Rows.Add("Loc4", 5);
      table1.Rows.Add("Loc1", 6);
      table1.Rows.Add("Loc1", 7);
      table1.Rows.Add("Loc5", 8);


      DataTable table2 = new DataTable("Registration1");
      table2.Columns.Add("Location");
      table2.Columns.Add("id");

      DataSet Dset = new DataSet("DSET1");
      DataSet Dset1 = new DataSet("DSET2");
      Dset.Tables.Add(table1);

      if (Dset.Tables[0].Rows.Count > 0)
      {
          for (int i = 0; i < Dset.Tables[0].Rows.Count; i++)
          {
              DataRow dr = Dset.Tables[0].Rows[i];
              if (dr["Location"].ToString() == "Loc1")
              {
                  table2.Rows.Add(dr["Location"].ToString(),dr["Id"].ToString());


              }
          }
          Dset1.Tables.Add(table2);
      }



Желаю удачи.


Рейтинг:
2

Prasannala

Попробовать это

var query = from C in dataSet.Table["tablename"].AsEnumerable()
                        where C["Location"].ToString() == "USA"
                        select new {Location=C.Field<string>("Location"),Name=C.Field<string>("Name")};
           
            DataTable dataTable = new DataTable();
            DataRow dr = dataTable .NewRow();
                foreach(DataRow row in query)
                {
                    dr[0] = row.ItemArray[1].ToString();
                    dr[1] = row.ItemArray[2].ToString();
                    dataTable .Rows.Add(dr);
                }</string></string>

DataSet Newdataset=new DataSet();
Newdataset.Tables.Add(dataTable );


Рейтинг:
2

RajWolfer

dim dataset2 as dataset = dataset1.Clone()
Dim rows As DataRow() = dataset1.Tables(0).[Select](" where col=123")
For Each row As DataRow In rows
 dataset2.Tables(0).Rows.Add(row)
Next


CHill60

Ответ на этот вопрос был дан 4 года назад. Придерживайтесь ответов на новые вопросы, где ОП все еще нуждается в помощи

Рейтинг:
0

sankarsan parida

Я написал демо-код для вас, просто получите идею здесь и проверьте свой фактический тип данных, о котором я упоминал,например string, datetime, int...
Просто проверь свой путь
Но это должно быть так

var filterdata = (from f in dataset1.Tables[0].AsEnumerable()
                          where f.Field<string>("Location") == "India"
                          select new
                          {
                              Name = f.Field<string>("Name"),
                              Reg_Date = f.Field<DateTime>("Reg_Date"),
                              CityID = f.Field<int>("CityID"),
                              LocationID = f.Field<int>("LocationID"),
                              LocationName = f.Field<string>("LocationName"),
                              Reg_For = f.Field<string>("Reg_For")
                          }).ToList();
        foreach (var item in filterdata)
        {
            DataRow row = new DataRow();
            row["Name"] = item.Name;
            row["Reg_Date"] = item.Reg_Date;
            row["CityID"] = item.CityID;
            row["LocationID"] = item.LocationID;
            row["LocationName"] = item.LocationName;
            row["Reg_For"] = item.Reg_For;
            dataset2.Tables[0].Rows.Add(row);
        }