2015-10-13 91 views
3

我使用動態LINQ在運行時創建查詢。這裏有一個例子:LINQ動態從條款

var result = dbContext.Table1 
.Where(x => x.Field1 == "SomeValue") 
.Select(x => new { x.Field1, x.Field2 }); 

在這裏,我可以動態改變where子句和SELECT子句,但有什麼辦法從條款的動態?

如果我想在運行時更改dbContext.Table1與其他表?或者我必須使用SQL?

編輯:關於重複的問題建議:這是同一個問題,但在這個問題上沒有正確的答案。在那裏提供的答案是不夠通用的,我將不得不爲每個新表格添加一個case語句...

+4

的可能的複製[?如何建立一個動態的從LINQ查詢條款(http://stackoverflow.com/questions/13796941/how-to-build-a-dynamic-from -clause-FOR-A-LINQ查詢) –

回答

0

您可以使用流動代碼從表名獲取表值。希望能幫助到你。

var table = (ITable)dbContext.GetType() 
         .GetProperty(tableName) 
         .GetValue(dbContext, null); 
0

如果你知道你需要檢索實體的類型,你可以用你的數據庫的上下文,而不是Table1屬性的Set<>方法。例如:

var data = dbContext.Set<EntityType>();