c# - 有没有办法在完成自定义 WHERE 子句时跳出 LINQ SELECT

标签 c# .net linq ienumerable betfair

我有一个 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 循环是最好的方法。

任何帮助将不胜感激。谢谢

最佳答案

不要忘记 TakeTakeWhile

从 TakeWhile...

Returns elements from a sequence as long as a specified condition is true, and then skips the remaining elements.

关于c# - 有没有办法在完成自定义 WHERE 子句时跳出 LINQ SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096503/

相关文章:

c# - 如何测试被吞噬的异常

.Net Core 项目中的 .Net Framework Nuget 包

C# 版本的 SQL LIKE

c# - 在单个对象上实现 linq 的 Cast<T>()

Linq 效率问题 - foreach 与聚合

c# - C# 中的 LINQ 分组依据和排序依据

c# - EWS : "The remote server returned error (401) Unauthorized"

c# - 上传带有附加信息的文件(Angular 8 到 C# Core 3)

c# - 发送不记名 token 时 API 端点返回 "Authorization has been denied for this request."

c# - 将值传递给方法