c# - 表达式树可能不包含在 C# Linq 中使用选项参数的调用或调用

标签 c# linq entity-framework

在第一部分中选择匿名类型时,我试图为其中一个属性做一个 case 语句,然后将其转换为我的返回类型列表 (retList)。在底部的 retList 部分中,当我设置 QuarterName = p.QuarterName 时,我在上一节的 DatePart 函数上收到以下错误:

An expression tree may not contain a call or invocation that uses optional arguments

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;
    }

最佳答案

DatePart methods有额外的可选参数。 C# 不允许表达式树利用可选参数,因此您需要为每个方法调用提供整个参数列表。

根据文档,FirstDayOfWeek.SundayFirstWeekOfYear.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>"

关于c# - 表达式树可能不包含在 C# Linq 中使用选项参数的调用或调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675550/

相关文章:

c# - 绘制两条相交的线,需要使用 directx 在 c# 中找到相交点吗?

c# - 使用 linq 获取分组的逗号分隔值

C# DataTable 选择列名类似的列

c# - 通过对多行求和来排序列表

c# - Entity Framework 如何访问关联?

c# - EntityFramework 在给定时间保存数据库的 "frozen image"

c# - 转义WPF DataContext

c# - WebClient.DownloadFile 和正确的 url 操作已超时

c# - 如何使用 Roslyn 评估局部变量/参数状态

c# - 数据集设计器加载 XML 而不是 TableView