C#Lists =>删除其他列表中不存在属性的对象

时间:2014-02-27 18:25:47

标签: c#-4.0 ilist icollection

我有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; }
}

干杯

1 个答案:

答案 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));