0

我有一堂课,如下所示:

public class ParentData
{
    public List<ChildData> ChildDataList { get; set; }
    public ChildData AnotherChildData { get; set; }
}

我正在寻找一个简单的 Linq 查询来从这 2 个成员中进行选择。这是我实际做的:

var query = (from data in parentData.ChildDataList select data)
            .Union
            (from data in new List<ChildData> { parentData.AnotherChildData } select data);

有一个更好的方法吗?谢谢你。

4

2 回答 2

4

您可以将代码简化为:

var query = parentData.ChildDataList
                      .Concat(new [] { parentData.AnotherChildData });
于 2013-08-07T07:52:43.887 回答
0

这是我使用的解决方案(根据Is there a quieter linq way to 'Union' a single item?):

public static class LinqHelper
{
    // returns an union of an enumerable and a single item
    public static IEnumerable<T> SingleUnion<T>(this IEnumerable<T> source, T item)
    {
        return source.Union(Enumerable.Repeat(item, 1));
    }

    // returns an union of two single items
    public static IEnumerable<T> SingleUnion<T>(this T source, T item)
    {
        return Enumerable.Repeat(source, 1).SingleUnion(item);
    }
}

然后我可以这样做:

var query = parentData.ChildDataList
            .SingleUnion(parentData.AnotherChildData)
于 2013-08-07T08:22:16.427 回答