У меня есть оператор LINQ, использующий пользовательскую функцию для поиска определенных совпадающих данных в сжатой строке.
Существует только одно совпадение, и если бы я сделал цикл FOR, я бы добавил «разрыв», как только были найдены данные. Однако, используя LINQ, кажется, что он перебирает все записи в поисках совпадений, нужно это или нет (что имеет смысл с точки зрения SQL / подмножества), однако мне было интересно, есть ли способ заставить оператор LINQ прерваться после завершения предложение WHERE, чтобы не было необходимости искать подходящие записи после того, как было найдено единственное совпадение.
Я мог бы просто переписать все это, чтобы использовать цикл FOR, но я хотел знать, существует ли способ ограничения оператора LINQ, чтобы он прекратил поиск после X итераций, если условие было найдено.
Код ниже
IEnumerable<MarketDataType> queryMarkets =
from m in Mdata
where !String.IsNullOrEmpty(m)
let field = m.Split('~')
where (MatchMarket(field[5], BaseDate.AddMilliseconds(DaylightSavings + Convert.ToDouble(field[4])), field[1], racecourse, racedatetime, marketType))
select new MarketDataType()
{
marketId = Convert.ToInt32(field[0]),
marketName = field[1].Replace(ColonCode, ":"),
marketType = field[2],
marketStatus = field[3],
eventDate = BaseDate.AddMilliseconds(DaylightSavings + Convert.ToDouble(field[4])),
menuPath = field[5].Replace(ColonCode, ":"),
eventHeirachy = field[6],
betDelay = Convert.ToInt32(field[7]),
exchangeId = Convert.ToInt32(field[8]),
countryCode = field[9],
lastRefresh = BaseDate.AddMilliseconds(DaylightSavings + Convert.ToDouble(field[10])),
noOfRunners = Convert.ToInt32(field[11]),
noOfWinners = Convert.ToInt32(field[12]),
totalAmountMatched = Convert.ToDouble(field[13]),
bspMarket = (field[14] == "Y"),
turningInPlay = (field[15] == "Y")
};
marketData = queryMarkets.ToList();
Могу ли я добавить еще одно предложение WHERE, которое каким-то образом заглянуло в мой IEnumerable объект MarketDataType, чтобы гарантировать, что если строка существует, то она игнорируется? ИЛИ лучше переписать это как цикл foreach / for.
Любая помощь будет высоко ценится. Спасибо