我有一个类如下:
public class ParentData
{
public List<ChildData> ChildDataList { get; set; }
public ChildData AnotherChildData { get; set; }
}
我正在寻找一个简单的Linq查询来从这两个成员中进行选择。这是我实际做的事情:
var query = (from data in parentData.ChildDataList select data)
.Union
(from data in new List<ChildData> { parentData.AnotherChildData } select data);
有更好的方法吗?谢谢。
答案 0 :(得分:4)
您可以将代码缩减为:
var query = parentData.ChildDataList
.Concat(new [] { parentData.AnotherChildData });
答案 1 :(得分:0)
这是我使用的解决方案(根据Is there a neater 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)