簡體   English   中英

c# where 子句,而不是 for 循環

[英]c# where clause, instead of for loop

在我的 C# 表單腳本中,我有一個包含 2-3k 個元素的數組。 我需要在該數組中找到一個特定值,但不對其應用 for 循環。 循環通過 2-3k 個元素會導致幾秒鍾的延遲,我不希望這樣。 這類似於網站的 Mysql 數據庫。

在 PHP 網站中,我在索引數據庫上使用 where 子句,因此即使表有 100 萬行,我也能夠在 0.020 秒內獲得我需要的唯一行。 C# 有類似的東西嗎?

這是我想要實現的目標。

 using System; using System.Linq; public class Program { public static float[] data = {140, 160, 170, 180, 190, 54235243,234,4213,1234,543,1234,3215,52134,1234,222,333,444,555,666,777,888,999}; public static void Main() { var queryLowNums = from num in data where num > 140 and num < 170 select num; // num should be 160 } }

上面的這段代碼是無效的,我只是想舉例說明我想做什么。 在這種情況下是否有這樣的語法/命令或任何可以幫助我的東西。 循環通過 2-3k 個元素可能需要一秒鍾或 2 秒 idk。 我知道如果我有給定元素的索引,它將直接加載它而無需 for 循環。 但是我知道如何實現這一點。

嘗試這個

 
    float[] data = { 140, 160, 170, 180, 190, 54235243, 234, 4213, 1234, 543, 1234, 3215, 52134, 1234, 222, 333, 444, 555, 666, 777, 888, 999 };

    float queryLowNums = 0;
    var startIndex = 0;
    Parallel.For(startIndex, data.Length, (j, state) =>
   {
       if (data[j] > 140 && data[j] < 170)
       {
           queryLowNums = data[j];
           state.Break();
       }
   });

output

160

使用清單

var list = new List<float>() { 140, 160, 170, 180, 190 };
var index = list.IndexOf(160);

 var values = list.Where(x=>x > 140 && x < 190); //it`s work very fast

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM