JQgrid / Entity Framework与具有关系的实体的问题

时间:2011-05-26 15:29:34

标签: entity-framework asp.net-mvc-3 jqgrid razor

我有一个与另一个实体有关系的实体。我能够搜索主实体中的列,并包含关系实体中的列。但我需要能够在不在关系实体中的列上过滤列表(搜索)。

例如

Invoice Entity包含customerId属性,并且与包含customerName属性的Customer Entity相关

我需要能够按customerName搜索/过滤网格。

我是实体框架的新手,请帮助。

感谢

卡尔

1 个答案:

答案 0 :(得分:0)

您的关系是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.Name过滤的字符串,我们可以这样做:

if(!string.IsNullOrEmpty(CustomerName))
{
    q = q.where(c => c.Name.ToLower().Contains(CustomerName.ToLower()));
}

请注意,我正在执行ToLower()操作和Contains,这将作为LIKE ingnoring区分大小写并在客户名称中的任何位置搜索字符串。

最后你将返回为jqGrid序列化的q.ToList()...