问题描述
我正在尝试将3个表合并为1个datagridview,但我希望每个表中都有一些特殊的列
这些是我的桌子
a.Malzemeler -Malzeme_ID(PK) -Malzemeİsmi -克_mL -Adet -BirimFiyat -ToplamFiyat
b.Tarifler -Tarif_ID(PK) -Tarif_İsmi -塔利马塔尔
c.TariflerveMalzemeler -ID -Tarif_ID(FK) -Malzeme_ID(FK) -克_mL -Adet
我想做的是
d。结果 -Tarif_İsmi(从表b) -Malzeme_İsmi(来自表a) -Gram_mL(来自表c) -Adet(来自表c) -Talimatlar(来自表b)
我的select查询在SQL上工作
"SELECT Tarif_İsmi,Malzemeİsmi,TariflerveMalzemeler.Gram_mL,TariflerveMalzemeler.Adet,Talimatlar FROM Malzemeler
JOIN TariflerveMalzemeler ON Malzemeler.Malzeme_ID = TariflerveMalzemeler.Malzeme_ID JOIN Tarifler ON TariflerveMalzemeler.Tarif_ID = Tarifler.Tarif_ID"
但是我不知道如何使它在datagridview上工作?
解决方法
尝试以下操作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication166
{
class Program
{
static void Main(string[] args)
{
DataTable Malzemeler = new DataTable();
Malzemeler.Columns.Add("Malzeme_ID",typeof(string));
Malzemeler.Columns.Add("Malzemeİsmi",typeof(string));
Malzemeler.Columns.Add("Gram_mL",typeof(string));
Malzemeler.Columns.Add("Adet",typeof(string));
Malzemeler.Columns.Add("BirimFiyat",typeof(string));
Malzemeler.Columns.Add("ToplamFiyat",typeof(string));
DataTable Tarifler = new DataTable();
Tarifler.Columns.Add("Tarif_ID",typeof(string));
Tarifler.Columns.Add("Tarif_İsmi",typeof(string));
Tarifler.Columns.Add("Talimatlar",typeof(string));
DataTable TariflerveMalzemeler = new DataTable();
TariflerveMalzemeler.Columns.Add("ID",typeof(string));
TariflerveMalzemeler.Columns.Add("Tarif_ID",typeof(string));
TariflerveMalzemeler.Columns.Add("Malzeme_ID",typeof(string));
TariflerveMalzemeler.Columns.Add("Gram_mL",typeof(string));
TariflerveMalzemeler.Columns.Add("Adet",typeof(string));
DataTable Result = new DataTable();
Result.Columns.Add("Tarif_İsmi",typeof(string));
Result.Columns.Add("Malzeme_İsmi",typeof(string));
Result.Columns.Add("Gram_mL",typeof(string));
Result.Columns.Add("Adet",typeof(string));
Result.Columns.Add("Talimatlar",typeof(string));
var joins = from tm in TariflerveMalzemeler.AsEnumerable()
join m in Malzemeler.AsEnumerable() on tm.Field<string>("Malzeme_ID") equals m.Field<string>("Malzeme_ID")
join t in Tarifler.AsEnumerable() on tm.Field<string>("Tarif_ID") equals t.Field<string>("Tarif_ID")
select new { tm = tm,m = m,t = t};
foreach (var j in joins)
{
Result.Rows.Add(new object[] {
j.t.Field<string>("Tarif_İsmi"),j.m.Field<string>("Malzeme_İsmi"),j.tm.Field<string>("Gram_mL"),j.tm.Field<string>("Adet"),j.t.Field<string>("Talimatlar")
});
}
}
}
}