Перепрыгнеть в содержание


- - - - -

listCurrentOrders помогите с реализацией


27 ответов в эту тему

#21 OFFLINE   maxspeed

    Специалист


  • Участник II
  • ПипПипПипПип
  • 508 сообщения
37

Добавлено 23 April 2015 - 16:11

спасибо попробую

#22 OFFLINE   Brain

    Пунтер


  • Участник II
  • ПипПип
  • 81 сообщения
30

Добавлено 23 April 2015 - 16:19

Сообщенияmaxspeed, on 23 April 2015 - 16:02, сказал:

перебрать я понял
а куда поместить результат лучше? в массив?
можно в свой массив, пототм его в таблицу вывести
можно сразу в таблицу

Сообщенияmaxspeed, on 23 April 2015 - 16:02, сказал:

насчет LINQ думал можно одной командой все выполнить

линк это реализация шаблонов тем кто знаком с языком запросов SQL.

одной строкой вы можете получить список зная некие условия, например
var Query =
			from currentOrder in CurrentOrders
			where currentOrder.MarketID == 12345678
			select currentOrder;

так выглядит линк запрос, вернет список всех ставок, где MarketID = 12345678

у вас же задача перебрать все рынки и вместо 12345678 подставлять все имеющиеся MarketID из списка полученных рынков.

поэтому LINQ пока оставьте на потом) там где нужно будет получить список где кеф меньше 5 и сматчено более 100к и еще десякок параметров, вот тут LINQ будет в точку

PS. да можно в одну строку создать нужный вам запрос в LINQ, но это в разы сложнее и отдельная большая история)

Отредактировано Brain, 23 April 2015 - 16:26.


#23 OFFLINE   maxspeed

    Специалист


  • Участник II
  • ПипПипПипПип
  • 508 сообщения
37

Добавлено 23 April 2015 - 16:37

огромное спасибо
теперь знаю в каком направлении работать
так бы без совета дергался в разных направлениях в поисках правильного решения
форум - это сила

#24 OFFLINE   maxspeed

    Специалист


  • Участник II
  • ПипПипПипПип
  • 508 сообщения
37

Добавлено 24 April 2015 - 07:00

конструкцию слепил - спасибо
вот теряюсь куда лучше данные запихнуть для удобства отображения в GridView
чтобы можно было удалять и добавлять данные
список, массив, база данных?

#25 OFFLINE   Brain

    Пунтер


  • Участник II
  • ПипПип
  • 81 сообщения
30

Добавлено 24 April 2015 - 12:17

Сообщенияmaxspeed, on 24 April 2015 - 07:00, сказал:

конструкцию слепил - спасибо
вот теряюсь куда лучше данные запихнуть для удобства отображения в GridView
чтобы можно было удалять и добавлять данные
список, массив, база данных?
Удобней всего в структуре данных. Ближе к вашему языку вроде VB.net, пример:

Public Structure xDATA
Dim mMarketName As String
Dim mMarketID As String
Dim mBetID As String
...
End Structure

Public mDataArray() As xDATA = {}
то есть массив из некой структуры, в которой хранится информация о рынке, ставках и т.д.
каждый элемент массива содержит эти данные

удалять, добавлять данные - как работа с обычным массивом. его можно сохранить в файл, например excel, и с него же загрузить в этот массив. Ну и соответственно вывести в GridView
ищите нечто подобное на своем языке

Отредактировано Brain, 24 April 2015 - 12:19.


#26 OFFLINE   denvb

    Специалист


  • Участник II
  • ПипПипПип
  • 382 сообщения
90

Добавлено 24 April 2015 - 13:05

собрались, значит, три не шарписта на С# ваять :D

Как бы сделал я...

1. привыкайте сразу к хорошему. Если есть Linq - используйте его. Потратьте время на освоение, это быстро окупится. БФ плотно работает с коллекциями и линк будет очень в помощь. Можете посмотреть этот сайт, в своё время он дал мне хороший старт в C#, кратко и по делу.

2. зачем пихать из одной структуры в другую и лепить из двух уже созданных списков третий? Вам всего лишь надо намапить рынки на ордера и будет быстрый и удобный Map, а списки отправятся к сборщику мусора. Уверен, что линк сделает это в пару строк, и без нагромождения циклов.

3. листМаркетКаталог можно вызывать гораздо реже, чем листОрдера, например если после мапинга остались ордера без рынка, то запрашиваем каталог. Прилично сэкономите на обращениях к АПИ.

4. как показывать всё это добро в GridView... по логике у неё должна быть модель, которая предоставляет инфу таблице (принцип MVC), тогда просто объясните ей (модели), что инфа в мапе

#27 OFFLINE   maxspeed

    Специалист


  • Участник II
  • ПипПипПипПип
  • 508 сообщения
37

Добавлено 28 April 2015 - 18:48

var query = from a in listmarketcatalogue
join b in result.CurrentOrders
on a.MarketId equals b.MarketId
select new
{
MarketId=a.MarketId,
MarketName=a.MarketName,
PriceSize=b.PriceSize,
Side=b.Side

};
вот наваял на LINQ
но ничего не возвращает

#28 OFFLINE   denvb

    Специалист


  • Участник II
  • ПипПипПип
  • 382 сообщения
90

Добавлено 29 April 2015 - 08:28

извиняюсь, что запутал, говоря о Linq подразумевая лямбды :wacko:
я имел ввиду конструкцию типа такой
Map<Order, Market> map = orders.stream()
		.flatMap(a -> markets.stream().filter(b -> (a.marketId == b.marketId)))
		.collect();

а так вложенными циклами
public Map<CurrentOrderSummary, MarketCatalogue> map(List<CurrentOrderSummary> os, List<MarketCatalogue> mks) {
	  
		Map<CurrentOrderSummary, MarketCatalogue> map = new HashMap<CurrentOrderSummary, MarketCatalogue>();
	  
		for (CurrentOrderSummary ord : os) {
			for (MarketCatalogue mk : mks) {
				if (ord.getMarketId().equals(mk.getMarketId())) {
					map.put(ord, mk);
					break;
				}
			}
		  
			// здесь для ордера не нашли MarketCatalogue, отложим marketId в MarketFilter, чтобы запросить у listMarketCatalogue()
		}
	  
		return map;
	}