2011-03-03 52 views
2

這可能嗎?或任何解決辦法是可能的按名稱動態使用表的LINQ-to-SQL

string table="language"; 
var a=_db.table.FirstOrDefault(); 
+1

這對於ASP.NET或MVC來說確實沒什麼特別的 – 2011-03-03 14:50:29

回答

2

首先找到的類型由名稱表示,然後調用_db.GetTable<T>()這樣的:

string entityName = "language"; 

var entityType = FindType(entityName); 

var result = _db.GetTable<entityType>().FirstOrDefault; 

輔助方法FindType()通過反射獲取類型:

public Type FindType(string typeName) { 
    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { 
     var result = assembly.GetType(typeName, false, true); 
     if (result != null) { return result; } 
    } 
    throw new Exception("Selected type can't be found in loaded assemblies"); 
} 
1

如果您有實體類型(而不僅僅是一個字符串),您可以使用_db.GetTable()