![](/img/trans.png)
[英]Convert.ToString(…) or Object.ToString() for performance
[英]Can we use ToString() or Convert.ToString() in linq query with entity framwork
使用實體框架時,我們可以使用ToString()或Convert.ToString()內聯查詢嗎? 它會支持所有數據庫嗎?(mySQL,oracle,..)還是對任何人都失敗
var pop = (from po in ctx.PurchaseOrders
select new SearchItem
{
id = po.PurchaseOrderID,
label = po.SupplierID.ToString, // or Convert.Tostring(po.SupplierID)
category = "purchaseorder"
}).ToList();
ToString()或Convert.ToString()在C#代碼文件中使用,並且適用於C#構造。 它與后端數據庫沒有連接。 因此,是的,它將被所有數據庫支持。
由於您要將查詢的數據轉換為列表,因此您可以執行以下操作-
var pop = from po in ctx.PurchaseOrders
select new SearchItem
{
id = po.PurchaseOrderID,
label = po.SupplierID,
category = po.purchaseorder
}.AsEnumerable() // Now, following Select will operate in memory
.Select(n => new {
n.PurchaseOrderID,
SupplierID = t.SupplierID ?? t.SupplierID.ToString(),
n.puchaseorder
}).ToList();
整個想法是,一旦您將查詢到的數據從數據庫中獲取到內存中,就可以使用.ToString()方法,正如我在查詢中在此所述。
它們之間有一個簡單但重要的區別……
當對象為null時,ToString()引發異常
因此,在object.ToString()的情況下,如果object為null,則會引發NullReferenceException。
如果為null,則Convert.ToString()返回string.Empty
(字符串)強制將對象分配為null
所以這取決於您的要求,我認為您可以使用
var pop = (from po in ctx.PurchaseOrders
select new SearchItem
{
id = po.PurchaseOrderID,
label = (string)po.SupplierID,
category = "purchaseorder"
}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.