有人建议我弄清楚这个要求。
var enableIds = context.items.Where(tble => tble.Date == null)
.GroupBy(a => a.Id)
.Select(g => new
{
Id = g.Key,
EId = g.Select(c => c.EId).Distinct()
});
对于上述查询,我的结果集低于结果
“ID \”:1,\ “EID \”:[1,2]
现在我要像这样动态地向EId添加-1值(“EId \”:[1,2,-1])
答案 0 :(得分:0)
我会尝试使用辅助方法Concat<T>
来做这样的事情。辅助方法可以作为IEnumerable<T>
的扩展方法实现。
var enableIds = _db.items.Where(tble => tble.Date == null)
.GroupBy(a => a.Id)
.Select(g => new
{
Id = g.Key,
EId = Concat(g.Select(c => c.EId).Distinct(), -1)
});
public static IEnumerable<T> Concat<T>(IEnumerable<T> enumerable, params T[] enumerable2)
{
if (enumerable == null) throw new ArgumentNullException("enumerable");
if (enumerable2 == null) throw new ArgumentNullException("enumerable2");
foreach (T t in enumerable)
{
yield return t;
}
foreach (T t in enumerable2)
{
yield return t;
}
}
答案 1 :(得分:0)
您可以使用Enumerable Concat扩展程序:
var enableIds = context.items.Where(tble => tble.Date == null)
.GroupBy(a => a.Id)
.Select(g => new
{
Id = g.Key,
EId = g.Select(c => c.EId).Distinct()).ToList().Concat(new[] { -1 })
});