C# 4.0 C Lists=>删除另一个列表中不存在属性的对象
我有两个相同类型结果的列表。 两个列表都使用唯一的数据集填充,但可能包含或不包含公共属性ex:Results.TitleName 我的问题是,在为每个列表返回ICollection的情况下,如何从其他列表不包含Results.TitleName的每个列表中删除项目 任何帮助都将不胜感激。但请记住,我可能要处理一个相当大的数据集,所以应该考虑性能C# 4.0 C Lists=>删除另一个列表中不存在属性的对象,c#-4.0,ilist,icollection,C# 4.0,Ilist,Icollection,我有两个相同类型结果的列表。 两个列表都使用唯一的数据集填充,但可能包含或不包含公共属性ex:Results.TitleName 我的问题是,在为每个列表返回ICollection的情况下,如何从其他列表不包含Results.TitleName的每个列表中删除项目 任何帮助都将不胜感激。但请记住,我可能要处理一个相当大的数据集,所以应该考虑性能 var Results1 = ResultsRepository.GetPoints(FirstElement); var Results2 = Re
var Results1 = ResultsRepository.GetPoints(FirstElement);
var Results2 = ResultsRepository.GetPoints(SecondElement);
}
ResultsRepository是一个NHibernate域:
使用制度
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; }
}
干杯试试下面的方法
List<Results> list1 = ...;
List<Results> list2 = ...;
list1.Remove(x => !list2.Any(y => y.TitleName != x.TitleName);
如果您有一个非常大的数据集,这个查找可能太慢,因此最好使用哈希集
var set = new HashSet<string>(list2.Select(x => x.TitleName);
list1.Remove(x => !set.Contains(x.TitleName));
你应该发布你正在使用的代码。向您展示如何调整不起作用的内容要比从空白板上展示一个示例容易得多。我在最初的文章中添加了代码片段。我在这里遗漏了一些内容,x.TitleName在这两种情况下都无效。有什么想法吗?@AllStar11你能把定义发布到Result中,这样我们就可以看到如何从它们到TitleName?完成了。请参阅第一篇文章中的编辑。干杯@重命名AllStar11以使用类型Results而不是ResultI仍然无法访问以下代码段中x的任何成员:y=>y.TitleName!=x、 标题或名称!set.Containsx.TitleName
var set = new HashSet<string>(list2.Select(x => x.TitleName);
list1.Remove(x => !set.Contains(x.TitleName));