我在控制檯應用程序中再現了我的問題。以下是代碼。C#中的Linq查詢無法按預期工作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LinqSample
{
class Program
{
static void Main(string[] args)
{
string query = "Maine, Maryland, Massachusetts, M";
var queries = query.Trim().Split((new[] { "," }), StringSplitOptions.RemoveEmptyEntries);
string lastQuery = queries[queries.Length - 1].Trim();
if (queries.Length > 1)
{
var remQueries = queries.Take(queries.Length - 1).ToArray();
string[] suggestions = new string[] {"Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota",
"Mississippi", "Missouri", "Montana"};
System.Console.WriteLine("Before Except ");
suggestions.ToList().ForEach(str => { System.Console.WriteLine(str); });
var unqiueSugs = from sug in suggestions
where !remQueries.Any(q => q.Equals(sug, StringComparison.OrdinalIgnoreCase))
select sug;
if (unqiueSugs != null)
{
suggestions = unqiueSugs.ToArray();
}
System.Console.WriteLine("\n After Except ");
suggestions.ToList().ForEach(str => { System.Console.WriteLine(str); });
}
}
}
}
上面的代碼後,我除了建議包含除「緬因」,「馬里蘭」,「馬薩諸塞州」的所有值。但它有7個值包括「馬里蘭州」,「馬薩諸塞州」。我在哪裏做錯了?請幫助。
編輯: 我使用開發工作室2008與.NET 3.5 sp1。我使用上面的代碼在asp.net mvc的
'uniqueSugs'永遠不會爲空。但是,它可以是空的。 – Marc 2010-07-16 13:33:32
正如@Matthew Flaschen所說,這段代碼看起來工作正常 – 2010-07-16 13:42:59
提供一個實際編譯和運行的小*完整*示例,用於演示您遇到的問題。這有兩個目的:首先,當它帶有錯誤的代碼是你所呈現的代碼時,它使我們更容易理解問題。其次,這樣做*你可能會發現你的bug *。 – 2010-07-16 13:45:53