2010-01-07 1 views
0

У меня довольно сложная инструкция Linq с несколькими объединениями, но у меня проблема с оператором orderby.Orderby a HashSet в объекте в Linq

Я думаю, что я могу немного уменьшить вопрос, но при необходимости расширится.

Первый мой объект имеет следующие свойства:

myObject.ID Это базовый Int

myObject.BrandName Это мой HashSet<string>.

Мне нужно отсортировать мой объект по BrandName, используя самое низкое или самое высокое значение, в зависимости от того, сортирую ли я по возрастанию или по убыванию.

ответ

4

Значит, вы имеете в виду порядок по минимальному или максимальному значению в наборе? К счастью, это легко - даже если он будет выполнять довольно плохо: (. Или наоборот, в зависимости от того, что заказ вы хотите)

orderby myObject.BrandName.Min() 

или

orderby myObject.BrandName.Max() descending 

+1

Awesome. Я не знаю, что мне больше нравится, когда я копаю ... Linq или StackOverflow.com :-) –

1

Будет ли эта работа для вас ?

// replace with mo.BrandName.Min() to sort the other way 
Func<MyObject, string> getBrand = mo => mo.BrandName.Max(); 

var q = from myObject in myObjects 
     let b = getBrand(myObject) 
     orderby b 
     select myObject; 
+0

Здесь нет необходимости использовать предложение «let». Вам нужно сделать Max() или Min(), а не Max или Min. –

+0

Я думал, что OP нужен синтаксис как часть более крупного выражения, и в этом случае было бы полезно узнать о нем ... Видимо, не ... –

+0

Хотя это не полезно для меня, это может помочь другим. Спасибо за усилия и информацию. Я не могу +1 вы ... поскольку я понятия не имею, будет ли то, что у вас есть :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^