PDA

View Full Version : سوال: جستجو با فیلد داینامیک در linq to sql



BOB
چهارشنبه 10 اسفند 1390, 14:54 عصر
سلام

در یک بانک اطلاعاتی سه جدول member، info و experience موجود است و هدف ما جستجوی member هایی است که دارای شرایط خاصی هستند.
فیلدهای مورد جستجو به سه شئ از انواع Linq.Table مقدار دهی شده و به روال search ارسال میشوند.

حال میخواهم در روال search، تمام فیلدهای غیر null که در سه پارامتر دریافتی مقدار دهی شده اند در شرط where چک شوند.
من کد زیر را نوشتم، اما جواب نمیدهد.



public static List<Member> searchFileds(Member mem, Info inf, Exp exp)
{
DataClassesDataContext db = new DataClassesDataContext();

var query = from m in db.Members
from i in db.Infos
from e in db.Exps
select m;

foreach (var prop in mem.GetType().GetProperties())
{
if (prop.GetValue(mem, null) != null)
{
query = query.Where(p => p.GetType().GetProperty(prop.Name) == prop.GetValue(mem, null));
}
}

var result = new List<Member>();
foreach (var propMember in query)
{
result.Add(propMember);
}

return result;
}


آیا از روش درستی استفاده میکنم؟ راه دیگری برای اینکار وجود دارد؟

hf1988
شنبه 13 اسفند 1390, 17:40 عصر
سلام دوست عزیز.
این query که زدی چنتا ایراد داره اولا اینکه شما 3 تا جدولو ضرب دکارتی کردی به جای اینکه بر اساس relation ای که با هم دارند join کنی .
و فکر نمیکنیم در این مثال نیازی به استفاده از Reflection باشه.
اینو ببین شاید به دردت بخوره .



var query = from m in db.Members
from i in db.Infos
from e in db.Exps
where m.Name == null
select m;