2010-03-24 160 views
1

當我使用的LINQ查詢給錯誤

var emp = _testModel.Where(m => m.Date == DateTime.Now).Select(m=>m); 

的LINQ表達式的誤差

'System.Collections.Generic.IEnumerable<TestModel>' does not contain a definition for 'System' and no extension method 'System' accepting a first argument of type 'System.Collections.Generic.IEnumerable<TestModel>' could be found (are you missing a using directive or an assembly reference?). 

我已經google'd和我到處找也沒辦法,我得到這個錯誤是什麼它在說什麼?它不會拋出異常。我發現這件事的唯一方法就是通過表達。這是進口

命名空間

using System; 
using System.Collections; 
using System.Linq; 
using System.Collections.Generic; 

嘗試過這樣的事情,它仍然給出了錯誤回報

string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; 

    var shortDigits = digits.Where((digit, index) => digit.Length < index); 
+0

我完全沒有問題,你的字符串數組,很奇怪 – Graviton

+0

你的名字空間/類名是什麼?那裏有衝突嗎? – Tanzelax

回答

0

原來在Windows Phone 7系列中存在一個錯誤,它阻止我查看結果。

2

也許你應該把

using System.Linq; 

在你的CS文件的開始。

請參閱a similar case

+0

它已經在我的文件中。 –

+0

這是System.Linq – leppie

0

可能是_testModel是IEnumerable類型而不是IEnumerable(Of T)非泛型IEnumerable沒有擴展方法Where

你可以嘗試

var emp = _testModel.OfType<T>().Where(p => p.Date == DateTime.Now); 

其中T應該是在這種情況下,你想p的類型爲你想要的通用枚舉類型。

+0

不,仍然沒有工作。我甚至嘗試過我發佈的第二個例子。仍然是奇怪的同樣的錯誤。 –

+0

@ user275561我嘗試了第二個示例,它工作正常。也許有破解之前或之後的代碼?你有沒有嘗試第二個例子,沒有其他代碼? – Cornelius

1

在您未向我們展示的部分代碼中,這肯定是個問題。此代碼編譯罰款使用.NET 3.5:

using System; 
using System.Collections; 
using System.Linq; 
using System.Collections.Generic; 

class TestModel 
{ 
    public DateTime Date { get; set; } 
} 

class Test 
{ 
    public void TestFunction() 
    { 
     IEnumerable<TestModel> _testModel = new TestModel[] { new TestModel() }; 
     var emp = _testModel.Where(m => m.Date == DateTime.Now).Select(m => m); 

     string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; 
     var shortDigits = digits.Where((digit, index) => digit.Length < index); 
    } 
}