我有一个与另一个实体有关系的实体。我能够搜索主实体中的列,并包括关系实体中的各列。但我需要能够过滤不在关系实体中的列的列表(搜索)。
例如
发票实体包含customerId属性,并且与包含customerName属性的客户实体相关
我需要能够按customerName搜索/筛选网格。
我是实体框架的新手,请帮忙。
感谢
Carl
您的关系是1->1。在这些情况下,我通常会向网格返回一个自定义类,该类具有我需要的所有列,包括与其他表的联接。
因此,基本上您需要的是使用您的结果集创建一个自定义linq查询。
mais查询应该遵循以下示例:
var q = from i in ctx.Invoices
join c in ctx.Customers on i.CustomerID equals c.CustomerID
select new{InvoiceID=i.InvoiceID, InvoiceDate=i.Date, CustomerName=c.Name};
现在,假设我们收到一个CustomerName变量,其中包含要按c过滤的字符串。我们可以执行以下操作:
if(!string.IsNullOrEmpty(CustomerName))
{
q = q.where(c => c.Name.ToLower().Contains(CustomerName.ToLower()));
}
注意,我正在执行ToLower()操作和Contains,这将作为区分大小写的LIKE,并在Customer Name中的任何位置搜索字符串。
最后,您将返回为jqGrid序列化的q.ToList()。。。