PDA

View Full Version : خطا در مورد 'System.Collections.Generic.IEnumerable<AnonymousT ype#1> کار با IEnumarable



RIG000
دوشنبه 12 آبان 1393, 22:49 عصر
var userQuery = (from u in context.Users select new { u.PersonUserName, u.PersonId }).AsEnumerable(); var productQuery = (from p in context.Products select new { p.ProductId, p.ProductName }).AsEnumerable();


IEnumerable<string> resualt = productQuery.Union(userQuery);
حالا به union گیر میده و این خطاه ها رو میده ...


Error 2 'System.Collections.Generic.IEnumerable<AnonymousType#1>' does not contain a definition for 'Union' and the best extension method overload 'System.Linq.Queryable.Union<TSource>(System.Linq.IQueryable<TSource>, System.Collections.Generic.IEnumerable<TSource>)' has some invalid arguments D:\Test Visual Folder\TestLinqToEntitis\TestLinqToEntitis\Program .cs 392 43 TestLinqToEntitis


و

Error 1 Instance argument: cannot convert from 'System.Collections.Generic.IEnumerable<AnonymousType#1>' to 'System.Linq.IQueryable<AnonymousType#2>' D:\Test Visual Folder\TestLinqToEntitis\TestLinqToEntitis\Program .cs 392 43 TestLinqToEntitis


داشتم تست میگرفتم که نمیاد اینا رو باهم ادغام کنه. !!!

RIG000
دوشنبه 12 آبان 1393, 23:03 عصر
var userQuery = (from u in context.Users select new {u.PersonId}).AsEnumerable(); var productQuery = (from p in context.Products select new {p.ProductId}).AsEnumerable();


IEnumerable<string> resualt = userQuery.Union(productQuery);
اینجوری هم نشد!

En_MK
سه شنبه 13 آبان 1393, 12:24 عصر
این جواب میده؟


var resualt= userQuery.Union(productQuery);


چند جا این سوال شما مطرح شده
مورد اول (http://stackoverflow.com/questions/12278051/how-to-combine-two-linq-query-result-set-into-one-using-c-sharp)
مورد دوم (http://stackoverflow.com/questions/13371242/how-to-union-linq-output-from-different-tables-and-return)

veniz2008
سه شنبه 13 آبان 1393, 12:31 عصر
سلام.
در Union سه مورد رو باید رعایت کنید : یکی هم جنس بودن ترتیب ستون های نظیر به نظیر (جنس ستون اول مجموعه اول با جنس ستون اول از مجموعه دوم رو شما درست در نظر گرفتید و همچنین ستون های دوم رو. در واقع برعکس گرفتید) و مورد دوم اینکه عنوان ستون ها در هر دو مجموعه باید یکی باشند و سومین مورد برابر بودن خروجی تعداد ستون های مجموعه اول با خروجی تعداد ستون های مجموعه دوم(یعنی اگر از مجموعه اول دو ستون رو در نظر میگیرید برای مجموعه دوم هم باید دو ستون در نظر بگیرید) :

var userQuery = (from u in context.Users select new { u.PersonUserName, u.PersonId })
.Union(from p in context.Products select new {PersonUserName = p.ProductName , PersonId = p.ProductId });
موفق باشید.

RIG000
سه شنبه 13 آبان 1393, 16:41 عصر
هر دو جفت بالا رو امتحان کرده بودم و حتی بیشتر. کد خودمم درست بود. کلا من همسان سازی فیلد برو برای قانون union انجام نداده بودم. یکی از دوستان یه خط کد داد که فهمیدم کجا اشتباه کردم. اما از شما ممنونم که بررسی کردین ;)