我下面一個例子,它有一個類,它是這樣的:十進制值不能被識別/解析在我的構造
public class Price
{
private decimal _sellingPrice;
private decimal _rrp;
public Price(decimal RRP, decimal SellingPrice)
{
_rrp = RRP;
_sellingPrice = SellingPrice;
}
}
此類然後使用LINQ表查詢的值構成:
var products = from p in new ShopDataContext().Products
select new Model.Product
{
Id = p.ProductId,
Name = p.ProductName,
Price = new Price(p.RRP, p.SellingPrice)
};
在此似乎工作的例子,但是我得到這個錯誤:
Price = new Price(p.RRP, p.SellingPrice)
The best overload method match has some invalid arguments
Argument 1: cannot convert from 'decimal?' to 'decimal'
的p.RRP和p.Selling價值是從一個表作爲System.Decimal類型,默認情況下顯然是可空的,因此例外,在這個例子中,這似乎運行正常,所以爲什麼?有什麼我失蹤?我正在嘗試使用C#,並且我知道它默認使用嚴格的語言,所以沒有選項可以關閉並根據我的理解進行操作。
謝謝你的洞察力。
你好彼得,我注意到過,需要這種變化,使看來,筆者錯過了構造可空小數類型,我如果有另一種方式來度過,即使沒有這樣做的工作只是想知道因爲它似乎對他很好。 – CoderRoller
作者可能使用了非空數據庫字段?沒有更多信息,它如何運作尚不清楚。 –
字段RRP和SellingPrice在我的表上設置爲NULL,因此它們被作爲十進制取出?在LINQ查詢中,作者在代碼示例(我剛剛發現)上將它們設置爲非空:)。無論如何,我可以用空值或非空值解決問題。這兩個答案都是正確的,但是我會給你,因爲你指出了額外的細節。感謝你們。 – CoderRoller