簡體   English   中英

在調試時在Visual Studio中使用LINQ

[英]Using LINQ in Visual Studio while debugging

注意: 我願意下載並安裝可能針對此類事件的任何擴展。 該解決方案不需要直接來自標准VS功能。

問題:有沒有辦法在調試器中停止時使用LINQ或任何其他查詢方法來測試和查看List,Array,IEnumerable等的結果?

我知道你可以使用立即窗口刪除對象中包含的信息,但我想知道是否有一種方法可以用實際數據構建我所需的LINQ。

更新:

這是我在立即窗口中嘗試使用LINQ時遇到的錯誤:

returnRecords.Select(x => x)

錯誤CS1061:'List'不包含'Select'的定義而沒有> extension方法'select'接受類型'List'的第一個參數可以找到(你是否缺少using指令或匯編引用?)錯誤CS1061 :'列表'沒有

但這在代碼中工作正常

var fu = returnRecords.Select(x => x);

更新2:

即使像這樣簡單的事情也行不通:

        List<int> abc = new List<int>();
        abc.Add(12);
        abc.Add(15);
        abc.Add(16);
        abc.Add(91);
        abc.Add(81);
        abc.Add(14);
        abc.Add(13);
        abc.Add(10);
        abc.Add(145);
        abc.Add(12);

臨時窗口:

abc
Count = 9
    [0]: 12
    [1]: 15
    [2]: 16
    [3]: 91
    [4]: 81
    [5]: 14
    [6]: 13
    [7]: 10
    [8]: 145
abc.Where(x => x < 50);
error CS1061: 'List<int>' does not contain a definition for 'where' and no extension method 'where' accepting a first argument of type 'List<int>' could be found (are you missing a using directive or an assembly reference?)

您的直接問題是您在代碼中缺少對LINQ程序集的引用; 這就是你看到CS1061錯誤的原因。 只需using System.Linq;添加using System.Linq; 到文件的頂部。 然后,您將能夠在即時窗口中執行LINQ語句,您將看到,例如:

abc.Where(x => x < 50)
{System.Linq.Enumerable.WhereListIterator<int>}
    [0]: 12
    [1]: 15
    [2]: 16
    . . .

但是,有關調試LINQ的更多信息,我將向您介紹兩篇完整介紹它的文章:

這基本上是一個由兩部分組成的系列(雖然兩部分之間已經過了六年!)。 第一部分介紹了你可以在LINQ中進行調試的各種方法,其中沒有一個是非常令人滿意的,但是它們和你能得到的一樣好。 早期的LINQ調試

它仍然是一個非常有用的讀物​​,為良好地理解調試LINQ所涉及的內容奠定了基礎。 然后,第二篇文章介紹了即將發布的OzCode新功能,它是一個Visual Studio擴展,可以完全支持LINQ現場調試。 使用OzCode進行LINQ調試

暫無
暫無

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

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