我已经看到了许多答案,但似乎无法使它们起作用:
var numinqtoday = bc.SSRecs.Where(x => x.DateTime == id).Select(n => new
{
refer = n.@ref
}).GroupBy(x => x.refer).ToList();
var numinqprev = bc.SSRecs.Where(x => x.DateTime < id).Select(n => new
{
refer = n.@ref
}).GroupBy(x => x.refer).ToList();
var filtered = numinqtoday.Except(numinqprev).ToList();
在我上面的代码中:
numinqtoday.Count() = 184
numinqprev.Count() = 155
filtered.Count() = 184
我已经检查过,并且在numinqtoday内的numinqprev中肯定存在-因此看来。除了在放入过滤器之前未将其删除。
谁能告诉我我要去哪里错了?
谢谢,
标记
您在那里有一个组列表-我怀疑您会发现一个组永远不会等于另一个组。我怀疑您要在分组之前执行Except
操作。例如:
var numinqtoday = bc.SSRecs.Where(x => x.DateTime == id).Select(n => new
{
refer = n.@ref
}).ToList();
var numinqprev = bc.SSRecs.Where(x => x.DateTime < id).Select(n => new
{
refer = n.@ref
}).ToList();
var filtered = numinqtoday.Except(numinqprev).GroupBy(x => x.refer).ToList();
另一种选择是创建一组密钥,并使用Where
:
// Code as per your original, including the GroupBy calls. Change the string
// part as per the type of refer, which we don't know...
var keys = new HashSet<string>(numinqprev.Select(g => g.Key));
var filtered = numinqtoday.Where(g => !keys.Contains(g.Key)).ToList();
另请注意,如果只有一个属性,则使用匿名类型没有多大意义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句