Вот криво написал функцию, может кто-то подскажет как красивее сделать (упростить)?
private IEnumerable<TradingStrategyOperation> GetOperations(TradeDirection direction)
{
if(direction==TradeDirection.Sale)
return from to in TradingOperations
where to.Direction == direction
orderby to.Price
select to;
else
return from to in TradingOperations
where to.Direction == direction
orderby to.Price descending
select to;
}
Здравствуйте, <Аноним>, Вы писали:
А>Вот криво написал функцию, может кто-то подскажет как красивее сделать?
использовать тэги:
[c#]
[/c#]
... << RSDN@Home 1.2.0 alpha 4 rev. 1478>>
Что тут упрощать-то?
Логику сортировки все равно никуда не денешь.
Ну можно так переписать:
var linq = from to in TradingOperations where to.Direction == direction select to;
if (direction == TradeDirection.Sale)
linq = from to in linq order by to.Price
else
linq = from to in linq order by to.Price descending;
return linq;
Можно на extension's перейти, e.g. TradingOperation.Where(...) — возможно короче получится.
Еще можно Dynamic linq приспособить — скорей всего еще короче будет.
Или
вот этот код как-то под себя приспособить.
Здравствуйте, Аноним, Вы писали:
А>Вот криво написал функцию, может кто-то подскажет как красивее сделать (упростить)?
private IEnumerable<TradingStrategyOperation> GetOperations(TradeDirection direction)
{
var query =
from to in TradingOperations
where to.Direction == direction
select to;
var ordered = (direction == TradeDirection.Sale)
? query.OrderBy(item => item.Price) // Одни кейс
: query.OrderByDescending(item => item.Price); // Другой кейс
// Что-нить ещё динамическое…
return ordered;
}
_FR>_FR> private IEnumerable<TradingStrategyOperation> GetOperations(TradeDirection direction)
_FR> {
_FR> var query =
_FR> from to in TradingOperations
_FR> where to.Direction == direction
_FR> select to;
_FR> var ordered = (direction == TradeDirection.Sale)
_FR> ? query.OrderBy(item => item.Price) // Одни кейс
_FR> : query.OrderByDescending(item => item.Price); // Другой кейс
_FR> // Что-нить ещё динамическое…
_FR> return ordered;
_FR> }
_FR>
Спасибо, так мне нравится больше