ورود

View Full Version : اجتماع نتیجه چند کوئری



mbasirati
سه شنبه 01 دی 1394, 16:53 عصر
سلام
من برای بخش سرچ یه سایت باید توی چندتا جدول سرچ بزنم. من هرکدوم رو جداگانه سرچ میزنم و بعد نتیجه رو union میکنم. ولی ارور دارم:


LINQ to Entities does not recognize the method 'System.String Action(System.String, System. System.Object)' method, and this method cannot be translated into a store expression.

کدی هم که نوشتم به شکل زیره:

public ActionResult Search(string q, int? page)
{
int pageSize = 10;
int pageNumber = (page ?? 1);


var news = _db.News
.Where(x => x.Title.Contains(q)
|| x.Summery.Contains(q)
|| x.FullContent.Contains(q))
.Select(x => new SearchViewModel()
{
Title = x.Title,
Date = x.Date,
Image = x.Image,
Summery = x.Summery,
Type = "news",
Url = Url.Action("Details", "News", new { id = x.NewsId })
});




var entertainment = _db.Entertainments
.Where(x => x.Title.Contains(q)
|| x.Summery.Contains(q)
|| x.FullContent.Contains(q))
.Select(x => new SearchViewModel()
{
Title = x.Title,
Date = x.Date,
Image = x.Image,
Summery = x.Summery,
Type = "entertainment",
Url = Url.Action("Details", "Entertainment", new { id = x.Id })
});


var education = _db.Educations
.Where(x => x.Title.Contains(q)
|| x.Summery.Contains(q)
|| x.FullContent.Contains(q))
.Select(x => new SearchViewModel()
{
Title = x.Title,
Date = x.Date,
Image = x.Image,
Summery = x.Summery,
Type = "education",
Url = Url.Action("Details", "Education", new { id = x.Id })
});


var allPost = news.Union(education).Union(entertainment).OrderBy Descending(x => x.Date);


return View(allPost.ToPagedList(pageNumber, pageSize));
}




نمیدونم این شکلی ک من union کردم درسته یا نه. مشکل کارم کجاست؟

mbasirati
سه شنبه 01 دی 1394, 17:42 عصر
مشکلم حل شد.
با کمک این مطلب: http://stackoverflow.com/a/10110370/1883345

بعد از هر سلکت عبارت AsEnumerable() قرار دادم.