2011-05-26 115 views
0

我有一個與另一個實體有關係的實體。我能夠搜索主實體中的列,幷包含關係實體中的列。但是我需要能夠過濾不在關係實體中的列的列表(搜索)。JQgrid /實體框架問題與有關係的實體

例如

發票實體包含了CustomerID屬性,關係到包含客戶名稱屬性

我需要能夠通過客戶名稱搜索/過濾電網的客戶實體。

我是新來的實體框架,請大家幫忙。

感謝

卡爾

回答

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}; 

現在,假設我們收到客戶名稱變量與字符串由c.Name過濾,我們可以這樣做:

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

請注意,我在執行ToLower()操作和Contains時,這將具有LIKE ingnoring大小寫敏感性,並在Customer Name中的任何位置搜索字符串。

最後,您將返回序列化爲jqGrid的q.ToList()...