Если у меня есть имя таблицы базы данных, например:
string tableName = "Addresses";
string tableName = "Customers";
Как я могу построить динамический оператор LINQ следующим образом:
var items = from o in db.{tableName}
select o;
foreach (var item in items)
{
sb.Append(item.Id + Environment.NewLine);
}
Я знаю, что мог бы сделать что-то вроде этого:
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
("SELECT contactname FROM customers WHERE city = {0}",
"London");
Но в этом случае я не хочу строго типизированные объекты в качестве результата, я просто хочу, чтобы набор записей выделялся.
Ответ:
Спасибо, Шалкальпеш, я воспользовался вашим советом и решил это, просто полностью избегая LINQ :
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["main"].ToString();
conn.Open();
string sql = "SELECT * FROM " + tableName;
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataTable dtResult = new DataTable();
da.Fill(dtResult);
foreach (DataRow drRow in dtResult.Rows)
{
Console.WriteLine(drRow["Id"].ToString());
}
da.Dispose();
conn.Close();
conn.Dispose();