c# - LINQ SELECT 中的 IF 语句包含列

标签 c# linq select dynamic properties

是否可以在 linq Select 中包含或排除列?

var numberOfYears = Common.Tool.NumberOfYear;
 var list = users.Select(item => new
        {
            Id = item.Id,
            Name= item.Name,
            City= Item.Address.City.Name,
            STATUS = Item.Status,
            if(numberOfYears == 1)
            {
               Y1 = item.Records.Y1,
            }
            if(numberOfYears == 2)
            {
               Y1 = item.Records.Y1,
               Y2 = item.Records.Y2,
            }
            if(numberOfYears == 3)
            {
               Y1 = item.Records.Y1,
               Y2 = item.Records.Y2,
               Y3 = item.Records.Y3,
            }
        }).ToList();
    }

我的想法是,我只想在有值时显示 Y1、Y2、Y3

最佳答案

感谢 dynamic 关键字的美妙之处,您现在可以在 C# 中实现所需的功能。下面是一个例子:

public class MyItem
{
    public string Name { get; set; }
    public int Id { get; set; }
}

static void Main(string[] args)
{
    List<MyItem> items = new List<MyItem>
    {
        new MyItem
        {
            Name ="A",
            Id = 1,
        },
        new MyItem
        {
            Name = "B",
            Id = 2,
        }
    };

    var dynamicItems = items.Select(x => {
        dynamic myValue;
        if (x.Id % 2 == 0)
            myValue = new { Name = x.Name };
        else
            myValue = new { Name = x.Name, Id = x.Id };

        return myValue;
    }).ToList();
}

这将返回一个动态对象列表。一个有 1 个属性,一个有 2 个属性。

关于c# - LINQ SELECT 中的 IF 语句包含列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472990/

相关文章:

c# - 在 Linq 查询中不同

angularjs - AngularFire 和 ngOptions

Javascript 在表格单元格中选择

c# - DataTable.Load 跳到多结果 DataReader 中的下一个结果集

c# - 在 asp.net 中使用 SMTP.SendAsync 是否明智

c# - 层次结构问题 -> 用 Linq Join 替换递归?

c# - 将 XhtmlTextWriter 与 XmlTextReader 结合使用

c# - 使用 LINQPad 查询包含嵌套元素的 XML 文件?

mysql - 如何将这些 MySQL 结果转换(或可能将其转换为综合 View )?

c# - DriveInfo 在当前上下文中不存在?