Linq查询给出错误

时间:2010-03-24 05:40:13

标签: c# linq silverlight

当我使用

的Linq表达式时,我收到此错误
var emp = _testModel.Where(m => m.Date == DateTime.Now).Select(m=>m);

错误是

'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);

4 个答案:

答案 0 :(得分:2)

也许你应该把

using System.Linq;

在你的cs文件的开头。

请参阅此处查看a similar case

答案 1 :(得分: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);
    }
}

答案 2 :(得分:0)

可能是_testModel属于IEnumerable而非IEnumerable(Of T)非通用IEnumerable没有扩展方法Where

你可以尝试

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

其中T应该是您想要的通用枚举的类型,您希望p的类型。

答案 3 :(得分:0)

原来Windows手机7系列中存在一个错误,它阻止我查看结果。