簡體   English   中英

我們可以在帶有實體框架的linq查詢中使用ToString()或Convert.ToString()嗎

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM