我有2个相同类型的列表(结果)。 两个列表都填充了唯一的数据集,但可能包含或不包含公共属性ex:(Results.TitleName)。
我的问题是,如果为每个列表返回ICollection,如何从每个列表中删除其他列表中不包含Results.TitleName的项目。
任何帮助将不胜感激。但请记住,我可以处理相当大的数据集,因此应该考虑性能。
var Results1 = ResultsRepository.GetPoints(FirstElement);
var Results2 = ResultsRepository.GetPoints(SecondElement);
public ICollection<Results> GetPoints(string element)
{
if (element == null)
{
//Exception
}
using (ISession session = OpenSession())
{
try
{
return session.CreateQuery(HQL Query)
.List<Results>();
}
catch (Exception ex)
{
//Exception
}
}
ResultsRepository是一个NHibernate域: 使用System;
public class Results
{
/// <summary>
/// Unique Sample Number
/// </summary>
public virtual string SampleNumber { get; set; }
/// <summary>
/// Result Title name
/// </summary>
public virtual string TitleName{ get; set; }
}
干杯
答案 0 :(得分:1)
尝试以下
List<Results> list1 = ...;
List<Results> list2 = ...;
list1.Remove(x => !list2.Any(y => y.TitleName != x.TitleName);
如果您有一个非常大的数据集,则此查找可能太慢,因此HashSet<T>
可能更可取。
var set = new HashSet<string>(list2.Select(x => x.TitleName);
list1.Remove(x => !set.Contains(x.TitleName));