在C#中使用linq或lambda表达式返回一个集合和单个值

3

我想返回一个集合和一个单独的值。目前,我使用一个字段来创建一个新列表,并将一个值添加到该列表中,然后返回结果。有没有用linq或lambda表达式实现这个功能的方法?

private List<ChargeDetail> _chargeBreakdown
    = new List<ChargeDetail>();

public ChargeDetail PrimaryChargeDetail { get; set; }

public List<ChargeDetail> ChargeBreakdown
{
    get
    {
        List<ChargeDetail> result =
            new List<ChargeDetail>(_chargeBreakdown);
        result.Add(PrimaryChargeDetail);

        return result;
    }
}

你可能希望返回除 List<T> 之外的集合类型 - http://msdn.microsoft.com/zh-cn/library/ms182142%28VS.80%29.aspx - Russ Cam
@Reed 添加了 _chareBreakdown 字段。 - ahsteele
@Russ 谢谢你的建议,我不会在生产代码中这样做。;) - ahsteele
2个回答

4
您可以使用集合初始化器语法替代:

collection initializer

public List<ChargeDetail> ChargeBreakdown
{
    get
    {
        return new List<ChargeDetail>(_chargeBreakdown) {PrimaryChargeDetail};
    }
}

1

如果你将属性类型更改为 IEnumerable<ChargeDetail>,你可以这样做:

public IEnumerable<ChargeDetail> ChareBreakdown
{
    get { return _chargeBreakdown.Concat(new[] { PrimaryChargeDetail }); }
}

这取决于客户端使用该类的方式是否更简单(例如,如果他们只是通过集合进行迭代)。如果需要操作列表,则可以随时调用 ToList


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接