我正在尝试在第一部分中选择匿名类型时为其中一个属性执行case语句,然后将其转换为我的返回类型列表(retList)。在我设置QuarterName = p.QuarterName的底部的retList部分中,我在上面的部分的DatePart函数中得到以下错误:
表达式树可能不包含使用的调用或调用 可选参数
public static IEnumerable<Product> GetProducts(int categoryId)
{
using (var context = new DbContext())
{
var pList = (from p in context.Products
where (p.CategoryId == proformaId)
select new
{
Id = p.Id,
ProductName = p.ProductName,
QuarterName = pa.Quarter != "ExtraQuarter" ? "Q" + DateAndTime.DatePart(DateInterval.Quarter, p.PurchaseDate) +
"-" + DateAndTime.DatePart(DateInterval.Year, p.PurchaseDate) :
"<b><i>" + p.Quarter + "</i></b>"
}).ToList();
var retList = from p in pList
select new ProformaAssumption()
{
Id = pa.Id,
ProductName = p.ProformaId,
QuarterName = p.QuarterName
};
return retList;
}
答案 0 :(得分:3)
DatePart
methods有其他可选参数。 C#不允许表达式树利用可选参数,因此您需要为每个方法调用提供整个参数列表。
根据文档,如果您没有为可选参数提供值,则FirstDayOfWeek.Sunday
和FirstWeekOfYear.Jan1
是将使用的值。
QuarterName = pa.Quarter != "ExtraQuarter"
? "Q" +
DateAndTime.DatePart(DateInterval.Quarter, p.PurchaseDate,
FirstDayOfWeek.Sunday, FirstWeekOfYear.Jan1) +
"-" + DateAndTime.DatePart(DateInterval.Year, p.PurchaseDate,
FirstDayOfWeek.Sunday, FirstWeekOfYear.Jan1)
: "<b><i>" + p.Quarter + "</i></b>"