planetz Ответов: 1

Как создать набор данных из выбранных столбцов из нескольких наборов данных в C#


Всем Привет,

У меня есть 5 Просмотров сетки на странице. 4 из них имеют отдельные запросы и наборы данных, например ds1, ds2, ds3, ds4.

Теперь слева один gridview заполняется из объединенных данных выбранных столбцов других наборов данных, например:

ds1col2, ds2col2, ds3col2, ds4col2, ds1col3+ds2col3+ds3col3+ds4col3

Все представления сетки имеют поля данных с привязкой к полю.

Возможно ли такое сочетание?

Спасибо тебе..!!

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

Я пробовал слияние, но это объединяет все столбцы из всех таблиц и работает только на 2 таблицах одновременно.

Karthik_Mahalingam

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

planetz

да, существует столбец, который является одинаковым для всех наборов данных, но это не что-то вроде первичного ключа. Точно так же, как список студентов, скажем, где имя студента-это общее поле, а их индивидуальные предметные отметки-это 4 набора данных, а затем есть сводка, содержащая индивидуальные предметные отметки, а также общие отметки.

Kornfeld Eliyahu Peter

Вы должны сделать это на уровне базы данных... Варианты кодирования очень сложны...

planetz

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

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

обратитесь к этому и настройте его под свои нужды

static void Main(string[] args)
       {
           //ds1col2, ds2col2, ds3col2, ds4col2, ds1col3+ds2col3+ds3col3+ds4col3

           DataTable ds1 = new DataTable();
           ds1.Columns.Add("CommonCol");
           ds1.Columns.Add("Col2");
           ds1.Columns.Add("Col3");
           ds1.Rows.Add("A", 1, 2);
           ds1.Rows.Add("B", 1, 2);

           DataTable ds2 = new DataTable();
           ds2.Columns.Add("CommonCol");
           ds2.Columns.Add("Col2");
           ds2.Columns.Add("Col3");
           ds2.Rows.Add("A", 1, 2);

           DataTable ds3 = new DataTable();
           ds3.Columns.Add("CommonCol");
           ds3.Columns.Add("Col2");
           ds3.Columns.Add("Col3");
           ds3.Rows.Add("A", 1, 2);

           DataTable ds4 = new DataTable();
           ds4.Columns.Add("CommonCol");
           ds4.Columns.Add("Col2");
           ds4.Columns.Add("Col3");
           ds4.Rows.Add("A", 1, 2);

           DataTable ds5 = new DataTable();
           ds5.Columns.Add("CommonCol");
           ds5.Columns.Add("Col1");
           ds5.Columns.Add("Col2");
           ds5.Columns.Add("Col3");
           ds5.Columns.Add("Col4");
           ds5.Columns.Add("Col5");


           foreach (DataRow row in ds1.Rows)
           {
               string common = row["CommonCol"].ToString();
               double ds1col2 = GetValue(common, ds1);
               double ds2col2 = GetValue(common, ds2);
               double ds3col2 = GetValue(common, ds3);
               double ds4col2 = GetValue(common, ds4);
               double total = ds1col2 + ds2col2 + ds3col2+ ds4col2;
              var newRow =  ds5.NewRow();
              newRow["CommonCol"] = common;
              newRow["Col1"] = ds1col2;
              newRow["Col2"] = ds2col2;
              newRow["Col3"] = ds3col2;
              newRow["Col4"] = ds4col2;
              newRow["Col5"] = total;
              ds5.Rows.Add(newRow);

           }

       }

     static  double GetValue(string common, DataTable dt) {
           double returnValue = 0;
           var rows = dt.Select("CommonCol = '" + common + "'");
           if (rows.Length > 0)
               double.TryParse(rows[0]["Col3"].ToString(), out returnValue);
          return returnValue;

       }