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;
}
آیا از روش درستی استفاده میکنم؟ راه دیگری برای اینکار وجود دارد؟
در یک بانک اطلاعاتی سه جدول 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;
}
آیا از روش درستی استفاده میکنم؟ راه دیگری برای اینکار وجود دارد؟