2011-10-15 81 views
0

我想在LINQ查詢中創建動態where子句。我有一個stringbuilder sb具有附加值Country=null || City=null || State=null和一個名爲Name,Lastname,Country,City,State的列的數據表。我想比較sb值與數據表列,並獲得空/空行。使用LINQ查詢與stringBuilder

所以我想LINQ查詢是這樣的:

var query = from p in datatable.AsEnumerable() 
      where sb.tostring() // ------------error 
      select p 

但它返回一個錯誤。我怎麼解決這個問題?

+0

我不認爲你可以做到這一點。你想要做的是「評估」字符串。你不能在C#中輕鬆完成它(我會注意到你會得到你的計算機上的所有表,然後才能過濾它,所以如果表很大,你會「殺死」sql服務器:-)) – xanatos

+0

如果你真的想要實現你的「eval」函數,這可能是一個好的開始:http://www.ckode.dk/programming/eval-in-c-yes-its-possible/ – xanatos

回答

0

您可以使用Dynamic Linq

var query = datatable.Where("Country==null || City==null || State==null"); 

你需要下載和包括C#文件中的鏈接,並添加:

using System.Linq.Dynamic; 
0

你不能這樣做,在LINQ。動態LINQ可能會對您有所幫助,但這可能不是您的最佳解決方案。

你爲什麼創建查詢作爲一個字符串?您可以動態構建查詢本身。看看PredicateBuilder