Отношение внешнего соединения слева между наборами данных

#.net #ado.net

#.net #ado.net

Вопрос:

У меня есть два набора данных с именами dataset1,dataset2. Я хочу установить отношение внешнего соединения слева между ними.

например: набор данных 1, набор данных 2 для внешнего соединения слева

Комментарии:

1. вы имеете в виду два набора данных или таблицы данных?. Покажите какой-нибудь код, который поможет нам проанализировать, как много вы попробовали со своей стороны.

Ответ №1:

Ваш вопрос немного неясен, поэтому есть по крайней мере два возможных ответа.

Если у вас действительно есть два разных DataSet s, и они должны оставаться отдельными DataSet , тогда вы могли бы использовать LINQ (с Linq to DataSet) для создания внешнего соединения по левому краю. Вот пара сообщений в блоге, объясняющих, как создавать внешние соединения слева с помощью LINQ (один и два). Ваш код, вероятно, будет выглядеть примерно так

 var joinResult = from ds1Row in dataset1.Tables["some table"]
                 join ds2Row in dataset2.Tables["some other table"]
                 on ds1Row.Field<T>("some column") equals ds2Row.Field<T>("some other column") into tmpResult
                 from resultRow in tmpResult.DefaultIfEmpty()
                 select new 
                 {
                   //select whatever information you want
                   column1 = ds1Row.Field<T>("name column"),
                   column2 = ds1Row.Field<T>("name column"),
                   column3 = ds2Row.Field<T>("name column")
                 };
  

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

 mergedDataset.Relations.Add("relation name",
mergedDataset.Tables["some table"].Columns["some column"],
mergedDataset.Tables["some other table"].Columns["some other column"]);
  

Ответ №2:

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

 DataSet1.Merge(DataSet2)
  

Затем вы можете создать связь данных между двумя таблицами, выполнив

 DataSet1.Relations.Add(new DataRelation("myRelationship",DataTable1.Columns("ID"),DataTable2.Columns("ID")))
  

Ответ №3:

ВНУТРЕННЕЕ СОЕДИНЕНИЕ, ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ и ПРАВОЕ ВНЕШНЕЕ соединение для таблиц данных

по ссылке есть хорошая программа на vb, которая выполняет внешнее соединение. Вы можете использовать его, если используете в своем vb.net , проверьте это.

Реляционные операторы с данными в C # — метод объединения

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

Ответ №4:

Если вам просто нужен результат, я бы предложил использовать LINQ to DataSets, который позволяет использовать любой из операторов LINQ для запроса и соединения двух таблиц данных / наборов данных.

Эрик