我有以下代码片段
IQueryable<RssItem> rssItems = from prodotti prodotto in tuttiProdotti
join marca in tutteMarche on prodotto.marca equals marca.id
where prodotto.eliminato == 0
orderby prodotto.id ascending
select new GoogleShoppingRssItem
{
Author = AUTHOR,
//Availability = prodotto.disponibilita > 0 ? AvailabilityType.instock : AvailabilityType.outofstock,
//Availability = AvailabilityType.instock,
Title = prodotto.titolo,
};
当可用性行的第一个版本未被注释时,我得到了ArgumentException
,说那value
不是类型Edm.Int32
。我认为它与prodotto.disponibilita
属性有关int?
(但 DB 上没有null
值)。第二个版本,不检查产品数量,抛出同样的异常。
只有在注释了可用性设置的第二个版本之后,代码才最终起作用并且表达式得到了评估。
枚举定义如下:
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[XmlType(Namespace="http://base.google.com/ns/1.0")]
[XmlRoot("availability", Namespace="http://base.google.com/ns/1.0", IsNullable=false)]
public enum AvailabilityType {
/// <remarks/>
[XmlEnum("in stock")]
instock,
/// <remarks/>
[XmlEnum("available for order")]
availablefororder,
/// <remarks/>
[XmlEnum("out of stock")]
outofstock,
/// <remarks/>
preorder,
}
enum
关于在 LINQ 选择语句中设置属性,我应该知道些什么?