1
我有两个列表,我试图比较值,但问题是一个是List<string>
类型,另一个是List<SelectListItem>
类型。LINQ-ify比较检查
这就是我目前的工作正常,但我觉得这样一个简单的比较检查有很多开销。
List<SelectListItem> fullSubjects = SubRepo.GetSubjects();
//Create our custom list based off the diff
Manage.UserCustomSubjects = Manage.UserSubjects.Where(item => !StaticReferenceList.Contains(item)).ToList();
foreach (var s in Manage.UserCustomSubjects)
{
var checkval = fullSubjects.FirstOrDefault(t => t.Text == s);
if (checkval == null)
{
var additem = new SelectListItem();
additem.Text = s;
additem.Value = s;
fullSubjects.Add(additem);
}
}
这里的总体目标是创建没有任何重复值的fullSubjects
列表。
任何关于如何清理这个问题的建议,或者可能LINQ比较?
你意味着它是'fullSubjects.FirstOrDefault(T => t.Text == s.Text);'?你看过'Distinct()'扩展方法吗? –
您的描述与您的代码不符。如果您只是将项目添加到'fullSubjects',您希望如何“没有重复”? –
@JeffBridgman - 我相信特定的行是正确的,因为's'是一个字符串值,所以't.Text'也是如此。我确实看过Distinct(),但问题是'GetHasCode'的底层比较对于'SelectItemList.Text'和's'是不同的。 – X3074861X