无法使用.Except从另一个列表中减去列表

时间:2015-10-20 11:50:43

标签: c# entity-framework entity-framework-6

我的asp.net mvc-5&中包含以下代码ET-6: -

List<String> ScannedResourceNames = new List<String>();
if (scaninfo.Any(a => a.VMList.Any(a2 => a2.Resource.RESOURCENAME.ToLower() == vmname.ToLower())))
{
    ScannedResourceNames.Add(vmname.ToLower());
}
List<String> allcurrentresourcename = scaninfo.SelectMany(a => a.VMList.Select(a2 => a2.Resource.RESOURCENAME)).ToList();
List<String> finallist = allcurrentresourcename.Except(ScannedResourceNames).ToList();

目前allcurrentresourcename有3个项目:

  • A

  • C

虽然ScannedResourceName有1个项目:

所以当我定义.Except时,我会在finallist var中得到2个项目(A&amp; C)。但最终列表将有3个项目(A,B,C)。所以有人可以就此提出建议吗?

2 个答案:

答案 0 :(得分:4)

您可以使用其中一个标准StringComparer属性来忽略大小写。

  List<String> finallist = all.Except(these, StringComparer.InvariantCultureIgnoreCase)
                              .ToList();

答案 1 :(得分:1)

可能与案例有关,因为当您填写ScannedResourceNames列表时,您忽略了它:

a2.Resource.RESOURCENAME.ToLower() == vmname.ToLower()))

但是Except使用区分大小写的Equals实现。

如果您不想使用比较器,那也应该做到这一点:

List<String> finallist = allcurrentresourcename.Where(r => 
                                                !ScannedResourceNames.Contains(r.ToLower())
                                               .ToList();