Упражнения C # Sharp: создание правого соединения между двумя наборами данных
C # Sharp LINQ: упражнение 27 с решением
Напишите программу на C # Sharp для генерации правого внешнего соединения между двумя наборами данных.
Пример решения : -
C # острый код:
//LINQ does not supports right outer join, only supports left outer joins.
//You can get the behavior of a right outer join if you swap the tables and do a left outer join.
using System;
using System.Linq;
using System.Collections.Generic;
class LinqExercise27
{
static void Main(string[] args)
{
List<Item_mast> itemlist = new List<Item_mast>
{
new Item_mast { ItemId = 1, ItemDes ="Biscuit " },
new Item_mast { ItemId = 2, ItemDes ="Chocolate" },
new Item_mast { ItemId = 3, ItemDes ="Butter " },
new Item_mast { ItemId = 4, ItemDes ="Brade " },
new Item_mast { ItemId = 5, ItemDes ="Honey " }
};
List<Purchase> purchlist = new List<Purchase>
{
new Purchase { InvNo=100, ItemId = 3, PurQty = 800 },
new Purchase { InvNo=101, ItemId = 5, PurQty = 650 },
new Purchase { InvNo=102, ItemId = 3, PurQty = 900 },
new Purchase { InvNo=103, ItemId = 4, PurQty = 700 },
new Purchase { InvNo=104, ItemId = 3, PurQty = 900 },
new Purchase { InvNo=105, ItemId = 4, PurQty = 650 },
new Purchase { InvNo=106, ItemId = 1, PurQty = 458 }
};
Console.Write("\nLINQ : Generate a Right Join between two data sets : ");
Console.Write("\n--------------------------------------------------\n");
Console.Write("Here is the Item_mast List : ");
Console.Write("\n-------------------------\n");
foreach (var item in itemlist)
{
Console.WriteLine(
"Item Id: {0}, Description: {1}",
item.ItemId,
item.ItemDes);
}
Console.Write("\nHere is the Purchase List : ");
Console.Write("\n--------------------------\n");
foreach (var item in purchlist)
{
Console.WriteLine(
"Invoice No: {0}, Item Id : {1}, Quantity : {2}",
item.InvNo,
item.ItemId,
item.PurQty);
}
Console.Write("\nHere is the list after joining : \n\n");
var rightOuterJoin = from p in purchlist
join i in itemlist
on p.ItemId equals i.ItemId
into a
from b in a.DefaultIfEmpty()
select new
{
itid=b.ItemId,
itdes = b.ItemDes,
prqty=p.PurQty
};
Console.WriteLine("Item ID\t\tItem Name\tPurchase Quantity");
Console.WriteLine("-------------------------------------------------------");
foreach (var data in rightOuterJoin )
{
Console.WriteLine(data.itid + "\t\t" + data.itdes + "\t\t" + data.prqty);
}
Console.ReadLine();
}
}
public class Item_mast
{
public int ItemId { get; set; }
public string ItemDes { get; set; }
}
public class Purchase
{
public int InvNo { get; set; }
public int ItemId { get; set; }
public int PurQty { get; set; }
}
Пример вывода:
LINQ: Генерация правого соединения между двумя наборами данных: -------------------------------------------------- Вот список Item_mast: ------------------------- Item Id: 1, Описание: печенье Item Id: 2, Описание: Шоколад Item Id: 3, Описание: Масло Идентификатор товара: 4, Описание: Brade Item Id: 5, Описание: Мед Вот список покупок: -------------------------- Счет №: 100, Идентификатор товара: 3, Количество: 800 Счет № 101, Товар №: 5, Количество: 650 Счет № 102, Идентификатор товара: 3, Количество: 900 Счет № 103, Идентификатор товара: 4, Количество: 700 Счет № 104, Код товара: 3, Количество: 900 Счет № 105, Код товара: 4, Количество: 650 Счет № 106, Код товара: 1, Количество: 458 Вот список после присоединения: Идентификатор товара Название товара Покупка Количество -------------------------------------------------- ----- 3 масла 800 5 Мед 650 3 масла 900 4 Brade 700 3 масла 900 4 Brade 650 1 печенье 458
Блок - схема:
Редактор кода C # Sharp:
Внесите свой код и комментарии через Disqus.
Предыдущий: Написать программу на C # Sharp для генерации левого соединения между двумя наборами данных.
Далее: Написать программу на C # Sharp для отображения списка элементов в массиве в соответствии с длиной строки, затем по имени в порядке возрастания.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code