簡體   English   中英

無法隱式轉換類型'System.DateTime?' 到“ int?” C#Linq

[英]Cannot implicitly convert type 'System.DateTime?' to 'int?' C# Linq

代碼:突出顯示了最底部的部分,在這里我可以嘗試告訴Linq找到shipto列並在另一張表上更新datetimestamp一定時間,並告訴我不能隱式轉換類型'System.DateTime?'。 到“ int?” 我不確定如何繼續...

  var TestingLinq = (from a in db.shp_master
                     join b in db.shp_status on a.serialnbr equals b.serialnbr into b_join
                     from b in b_join.DefaultIfEmpty()
                     where
                               a.shipto == "1022a" &&
                               a.status == "s" &&
                               b.status == "s" &&
                               a.shpreq == 0
                     group new {a, b} by new {
                               a.serialnbr,
                               a.trailer,
                               a.shipto
                     } into g
                     orderby
                               g.Key.serialnbr
                     select new RecieveTruck {
                               SerialNumber = g.Key.serialnbr,
                               TrailerNumber = (g.Key.trailer ?? "N/A"),
                               Shipped = g.Min(p => p.b.datetimestamp),
                               ETA = 
                               g.Key.shipto == "1026" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(180) :
                               g.Key.shipto == "2020" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(195) :
                               g.Key.shipto == "2017" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(180) : 
                               g.Key.shipto == "nor" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(180) : null
                     });
  return View(TestingLinq);

給我標題中的錯誤。...我試圖將此SQL查詢轉換為Linq:

SELECT a.serialnbr, ISNULL(a.trailer, 'N/A') AS 'trailer', MIN(b.datetimestamp) AS 'datetimestamp', 
             CASE WHEN a.shipto = '1026' THEN DATEADD(mi, 180, MIN(b.datetimestamp)) 
                  WHEN a.shipto = '2020' THEN DATEADD(mi, 195, MIN(b.datetimestamp)) 
                  WHEN a.shipto = '2017' THEN DATEADD(mi, 180, MIN(b.datetimestamp)) 
                  WHEN a.shipto = 'nor' THEN DATEADD(mi, 180, MIN(b.datetimestamp)) 
                  ELSE NULL END AS 'eta' 
             FROM shp_master AS a LEFT OUTER JOIN shp_status AS b ON a.serialnbr = b.serialnbr 
             WHERE a.shipto = '1022a' AND a.status = 's' AND b.status = 's' AND a.shpreq = 0 
             GROUP BY a.serialnbr, a.trailer, shipto 
             ORDER BY a.serialnbr    

在您的評論中,您指定了RecieveTruck.ETAint? ,但是您正在通過分配

 ETA = g.Key.shipto == "1026" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(180) :
       g.Key.shipto == "2020" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(195) :
       g.Key.shipto == "2017" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(180) : 
       g.Key.shipto == "nor" ? (System.DateTime?)Convert.ToDateTime(g.Min(p => p.b.datetimestamp)).AddMinutes(180) : null

那將解析為DateTime? 您需要選擇一個。 好像您要尋找的ETADateTime? ,不過,所以我只需要更改該屬性類型,就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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