沒有什麼情況,其中testVar
將null
。
下面是一些代碼來說明這一點。一定要激活運行前的輸出視圖... 視圖 - >輸出
的是,LINQ查詢在以後執行可能發生的唯一的事,你會得到一個空的例外,因爲你的GHH是在點空的linq試圖查詢它。 Linq並不一定立即執行。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CallAsExpected();
CallWithNull();
CallNoHits();
Console.WriteLine("Look at Debug Output");
Console.ReadKey();
}
private static void CallNoHits()
{
TryCall(new List<string> {
"UK foo",
"DE bar"
});
}
private static void CallWithNull()
{
TryCall(null);
}
private static void CallAsExpected()
{
TryCall(new List<string> {
"US woohooo",
"UK foo",
"DE bar",
"US second",
"US third"
});
}
private static void TryCall(List<String> ghh)
{
try
{
TestMethod(ghh);
}
catch (Exception e)
{
Debug.WriteLine(e);
}
}
private static void TestMethod(List<String> ghh)
{
if (ghh == null) Debug.WriteLine("ghh was null");
var testVar = (from r in ghh
where (r.Contains("US"))
select r);
Debug.WriteLine(String.Format("Items Found: {0}", testVar.Count()));
if (testVar == null) Debug.WriteLine("testVar was null");
foreach (String item in testVar)
{
Debug.WriteLine(item);
}
}
}
}
有了這樣的問題,只需調試以找出什麼不工作/有預期的價值。 – keyser
@Keyser我們可以調試lambda表達式嗎? – Prateek
@Prateek你可以調試執行的東西。所以是的,你可以。 – keyser