2012-04-23 100 views
2

我目前正在使用EF Code-First,並且想要從數據庫中的許多表中獲取SELECT數據。這個查詢是一個可定製的查詢,因此我無法預測我將要檢索哪種數據。從SQL Server中檢索所有值作爲字符串

起初,當我嘗試運行ctx.Database.SqlQuery<string>(sql, param)時,遇到DateTime值時遇到異常。我想這樣做,而不是在服務器端投它。

有沒有人知道我該怎麼做呢?它可以在LINQ,LINQ-SQL或純粹的SQL中 - 只要它能完成工作!感謝球員...

回答

1

您不會得到它。 Linq-to-entities不會轉換爲字符串列表。您最好的機會是執行普通查詢,並對您的應用程序進行轉換和轉換。

您不知道哪些列用戶選擇的論點意味着您需要更多動態解決方案 - Linq-to-entities不是您的好工具(除非您嘗試使用Dynamic Linq或手動構建表達式樹) 。直接使用ESQL或SQL。

+0

不是最好的解決方案,我知道,但我遵循你所做的,並將轉換(nvarchar(500),)添加到每個值,並且它創造了奇蹟。謝謝! :) – matt 2012-04-23 10:02:43

0

當從多個表中選擇數據,使用anonymous types封裝屬性(字段),你想從這些表中選擇進入一個新的實體,是這樣的:

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 
    }); 
+0

我真的不知道我從查詢中得到什麼;由用戶決定。這意味着有時它可以是SELECT [Product]。[Product] [Name],在其他時候,SELECT [Product]。[ExpiryDate]。我只想從查詢中獲得一個List 。謝謝 – matt 2012-04-23 06:48:34

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() 
    }); 
+0

我真的不知道我從查詢中得到什麼;由用戶決定。這意味着有時它可以是SELECT [Product]。[Product] [Name],在其他時候,SELECT [Product]。[ExpiryDate]。我只想從查詢中獲得一個List 。謝謝 – matt 2012-04-23 06:46:10

相關問題