I have a LINQ statement that uses a custom function to find certain matching data in a compressed string.
There is only ever one match and if I had done a FOR loop I would have added a "break" once the data had been found. However using LINQ it seems to iterate through all records looking for matches whether it needs to or not (which makes sense from an SQL/subset point of view) however I was wondering if there was a way to make the LINQ statement break on completion of the WHERE clause so that it didn't have to carry on searching for matching records after it had found the single match.
I could just re-write it all to use a FOR loop but I wanted to know if there was a way of limiting the LINQ statement to stop searching after X iterations if the condition had been matched.
The code is below
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();
Could I add in another WHERE clause that somehow looked inside my IEnumerable object MarketDataType to ensure that if a row existed then it was ignored? OR would re-writing this as a foreach/for loop be the best way.
Any help would be much appreciated. Thanks