我的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)。所以有人可以就此提出建议吗?
答案 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();