View Full Version : سوال: اضافه کردن دو لیست از دو جدول مختلف در یک لیست
hastiam
یک شنبه 15 مرداد 1391, 16:55 عصر
سلام
من دو تا جدول به نام ورود کالا و خروج کالا دارم که شامل 3 فیلد یکسان به نام Name,Code,Quantity است که در جدول خروج کالا ستون Quantity تعداد خروجی آن کالا ثبت می شود و در جدول ورود کالا ستون Quantityتعداد ورودی همان کالا ثبت می شود حالا من می خوام این دو جدول رو با استفاده از دو دستور زیر بگیرم و در نهایت یک لیستی (از هر نوعی که ممکن هست)تعریف کنم این دو تا لیست رو در آن لیست بریزم.
var getReceipt = context.ReceiptDetails.ToList();
var getstock = context.StockDetails.ToList();
نمی خوام با استفاده از join این کار رو انجام بدم چون join کالاهایی که در هر دو جدول هست را لیست می کند در حالی که من کل کالاها رو می خوام.
Mahmoud.Afrad
یک شنبه 15 مرداد 1391, 20:06 عصر
از متد concat برای اجتماع استفاده کنید
var getAll = context.ReceiptDetails.ToList().Concat(context.Sto ckDetails.ToList());
tooraj_azizi_1035
یک شنبه 15 مرداد 1391, 21:49 عصر
از متد Union موجودیت context.ReceiptDetails استفاده کن و context.StockDetails رو به عنوان پارامتر به اون ارسال کن. نتیجه می شه همه رکوردها.
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
var query = (from a in context.Products
where a.Name.StartsWith("A")
select new { a.Name, pid = a.ProductID, a.ListPrice })
.Union
(from b in context.Products
where b.Name.StartsWith("B")
select new { b.Name, pid = b.ProductID, b.ListPrice })
.Select(c => new { c.Name, c.ListPrice }).OrderBy(d => d.Name);
foreach (var result in query)
{
Console.WriteLine(result.Name);
}
}
hastiam
دوشنبه 16 مرداد 1391, 08:39 صبح
ممنونم به خاطر پاسخگوییتون. اما در مورد استفاده از Union و Concat باید هر دو لیست از یک نوع باشند مثلا یا از نوع Receipt و یا از نوع Stock در حالی که من می خوام دو تا لیست از دو جدول مختلف(دو نوع مختلف) رو در یک لیست دیگه ای بریزم برای حل این مشکل آیا راهی هست؟
Mahmoud.Afrad
دوشنبه 16 مرداد 1391, 09:06 صبح
چون گفتید سه تا پراپرتی یکسان دارند میتونید از این حالت استفاده کنید. درضمن اگر به گفته آقای tooraj_azizi_1035 (http://barnamenevis.org/member.php?41757-tooraj_azizi_1035) دقت میکردید متوجه میشدید
var getAll = context.ReceiptDetails.Select
(item => new { Quantity = item.Quantity, Code = item.Code, Name = item.Name }).Concat
(context.StockDetails.Select(item => new { Quantity = item.Quantity, Code = item.Code, Name = item.Name }));
hastiam
چهارشنبه 18 مرداد 1391, 10:43 صبح
دوستان دوباره به یه مشکلی برخوردم و اون هم اینه که اگه من بخوام از لیست getAll که همه رکوردها رو میاره مقدار Quantity که از لیست اول (ReceiptDetails) دارم رو از مقدار Quantity که از لیست دوم (StockDetails)دارم کم کنم و در نهایت اون مقدار رو ببینم باید از چه دستوری استفاده کنم؟:خجالت::خجالت:
hastiam
چهارشنبه 18 مرداد 1391, 11:44 صبح
مشکل رو حل کردم :تشویق: :تشویق: دستورشو مینویسم تا بقیه هم بتونند استفاده کنند :
var getfinalList = (from f in getAll
group f by new { f.Code } into g
select new { GoodsCode=g.Key.Code,GoodsQuantity=g.Sum(s=>s.Quantity)}).ToList();
من قبلا از همین دستور استفاده کردم فقط در group by علاوه بر Code
Name رو هم آورده بودم به خاطر همین دیگه عمل sum رو انجام نمیداد. که f.Name رو برداشتم و جواب درست رو گرفتم.:لبخندساده:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.