2011-06-07 114 views
1

我正在使用LINQ to Entities,並且我有幾個查詢,我希望能夠在運行時指定Select子句。動態構建Linq查詢的Select子句

我想我必須通過構建一個表達式並將其添加到IQueryable來實現,但我不知道如何執行此操作。任何人都可以給我一個提示嗎?

+0

你可以給你想要達到什麼樣的一個具體的例子嗎?可能有另一種做事的方式。 – marto 2011-06-07 13:19:34

回答

1

我不知道你可以用表達式做你想做的事。 select子句指定IQueryable集合中的對象的類型,它必須在編譯時定義。有一種叫做Dynamic Linq的東西可以做你想做的事。

+0

我知道動態Linq,但那不是我正在尋找的東西。然而,你對IQueryable的泛型類型提出了一個好的觀點,這讓我想到我想到的場景可能是不可能的。謝謝! – Rik 2011-06-07 13:14:20

0

事情是這樣的:

IQueryable<cerberus_Ticket> matches = db.cerberus_Tickets; 


if (this.AgentIdField.Text.Trim().Length > 0) 
{ 
    matches = matches.Where(a => a.AgentId == criteria.AgentId); 
} 

    if (this.TicketIdField.Text.Trim().Length > 0) 
{ 
    matches = matches.Where(a => a.TicketId.Contains(criteria.TicketId)); 
} 

var output = matches.ToList();