仅列出具有不同值的列表

时间:2014-03-31 12:40:54

标签: c# .net linq

我有包含属性的对象列表 IdName

 foreach (var x in mydata)
 {                
    var model = new MyViewModel()
    {
       Id = x.Days.Id,
       Name = x.Days.Name                                   
    };                                    
    models.Add(model);
 }

我正在返回包含重复项目的列表(模型),如何返回内部不同项目的列表?

2 个答案:

答案 0 :(得分:1)

如果您希望元素与Id区分开来:

foreach (var x in mydata)
 {                
    var model = new MyViewModel()
    {
       Id = x.Days.Id,
       Name = x.Days.Name                                   
    };                                    
    if(!models.Contains(x=>x.Id==model.Id)
        models.Add(model);
 }

答案 1 :(得分:1)

你可以使用HashSet<T>,类似的东西:

// Ids that was used before
HashSet<int> Ids = new HashSet<int>();

foreach (var x in mydata) {                
  // Check for duplicates
  if (Ids.Contains(x.Days.Id))
    continue; // <- duplicate
  else
    Ids.Add(x.Days.Id);

  // Your code
  var model = new MyViewModel() {
    Id = x.Days.Id,

    Name = x.Days.Name                                   
  };                                    

  models.Add(model);
}