2

我目前正在使用 EF Code-First,我想SELECT从数据库中的许多表中获取数据。这个查询是一个可定制的查询,因此我无法预测我将检索什么样的数据。

起初,当我尝试运行时ctx.Database.SqlQuery<string>(sql, param),遇到一个DateTime值时遇到了异常。我想在不将其投射到服务器端的情况下执行此操作。

有人知道我该怎么做吗?它可以是 LINQ、LINQ-SQL 或纯 SQL——只要它能完成工作!多谢你们...

4

3 回答 3

1

你不会得到它。Linq-to-entities 不会对字符串列表进行转换。您最好的机会是执行普通查询并转换和转换您的应用程序。

您不知道用户选择哪些列的论点只是意味着您需要更多动态解决方案 - Linq-to-entities 对您来说不是一个好工具(除非您尝试使用 Dynamic Linq 或手动构建表达式树)。直接使用 ESQL 或 SQL。

于 2012-04-23T08:59:59.793 回答
0

从多个表中选择数据时,使用匿名类型将您要从这些表中选择的属性(字段)封装到一个新实体中,例如:

var query = _db.Categories.Join(
_db.Products,
c => c.CategoryId,
p => p.CategoryId,
(category, product) =>
   new
   {
       ProductName = product.Name,
       CategoryName = category.Name,
       ExpiryDate = product.ExpiryDate
   });
于 2012-04-23T05:53:56.027 回答
0

您可以通过以下方式将数据字段转换为字符串来实现字符串值:

var query = _db.Categories.Join(
_db.Products,
c => c.CategoryId,
p => p.CategoryId,
(category, product) =>
   new
   {
       ProductName = product.Name.toString(),
       CategoryName = category.Name.toString(),
       ExpiryDate = product.ExpiryDate.toString()
   });
于 2012-04-23T05:57:08.860 回答