2010-10-15 3 views
3

У меня есть класс структура:В отличии от конкретной области

class MyEx{ 
public int Prop1; 
public int Prop2; 
public int Prop3 
} 

prop1 и Проп-всегда одинаков, Prop3 изменяется. этот класс я хочу, чтобы извлечь из более длинного конца должно быть что-то вроде

select new MyEx { Prop1=something; 
        Prop2= something2; 
        Prop3=something3; 
} 

проблема в том, что something3 не является уникальным, поэтому я хотел бы применить Distinct к THW запроса, чтобы получить класс выше с различными значениями Prop3. Но это не работает. Любые идеи, почему? Благодаря

+0

"Это не похоже на работу" - *, что * не похоже на работу? Вы не сказали, что вы пробовали, или результат. –

+0

Кроме того, много вашего вопроса непонятно, например: «Я хочу получить от более длинного конца, должно быть что-то вроде», не имеет никакого смысла. Пожалуйста, прочитайте http://tinyurl.com/so-hints –

ответ

4

Немного как так?

public static class SomeHelperClass 
{ 
    public static IEnumerable<TSource> DistinctBy<TSource, TValue>(
     this IEnumerable<TSource> source, Func<TSource,TValue> selector) 
    { 
     var hashset = new HashSet<TValue>(); 
     foreach (var item in source) 
     { 
      var value = selector(item); 
      if (hashset.Add(value)) yield return item; 
     } 
    } 
} 

затем:

var distinct = list.DistinctBy(item => item.Prop3); 
Смежные вопросы