找不到查询模式的实现

在我的Silverlight应用程序中,我试图用LINQ创build一个数据库连接。 首先我添加一个新的LINQ to SQL类,并将我的表“tblPersoon”拖入它。

然后在我的服务文件中,我尝试执行以下查询:

[OperationContract] public tblPersoon GetPersoonByID(string id) { var query = (from p in tblPersoon where p.id == id select p).Single(); 

但在tblPersoon它给我以下错误。

找不到源types为“SilverlightApplication1.Web.tblPersoon”的查询模式的实现。 '哪里找不到'。

甚至当我尝试以下:

 var query = (from p in tblPersoon select p).Single(); 

它给了我一个错误,说'select'没有find!

为我的表生成的类的代码可以在这里find: http : //pastebin.com/edx3XRhi

是什么原因造成的,我将如何解决这个问题?

谢谢。

tblPersoon是否实现IEnumerable<T> ? 您可能需要使用以下方法:

 var query = (from p in tblPersoon.Cast<Person>() select p).Single(); 

这种错误( 无法find查询模式的实现 )通常发生在:

  • 您缺lessLINQ名称空间使用情况( using System.Linq
  • 你正在查询的types没有实现IEnumerable<T>

编辑

除了事实上你查询types( tblPersoon ),而不是属性tblPersoons ,你还需要一个上下文实例(定义tblPersoons属性的类),如下所示:

 public tblPersoon GetPersoonByID(string id) { var context = new DataClasses1DataContext(); var query = context.tblPersoons.Where(p => p.id == id).Single(); // ... 

您可能需要将using语句添加到文件。 默认的Silverlight类模板不包括它:

 using System.Linq; 

确保包括这些参考文献:

  • 将System.Data.Linq
  • System.Data.Entity的

然后添加使用语句

 using System.Linq; 

你错过了平等:

 var query = (from p in tblPersoon where p.id == 5 select p).Single(); 

where子句必须导致布尔值。

或者你不应该使用的where

 var query = (from p in tblPersoon select p).Single(); 

我有一个类似的问题,生成强types的数据集,完整的错误信息是:

无法find源types为“MyApp.InvcHeadDataTable”的查询模式的实现。 '哪里找不到'。 考虑显式指定范围variables“row”的types。

从我的代码:

  var x = from row in ds.InvcHead where row.Company == Session.CompanyID select row; 

所以我按照它的build议做了明确的规定:

  var x = from MyApp.InvcHeadRow row in ds.InvcHead where row.Company == Session.CompanyID select row; 

哪一个工作的一种享受

我有与标题所述的相同的错误,但对我来说,它只是安装Microsoft访问12.0 oledb可再发行与LinqToExcel使用。

最简单的方法是将此IEnumerable转换为Queryable

如果它是可查询的,那么执行查询变得容易。

请检查这个代码:

 var result = (from s in _ctx.ScannedDatas.AsQueryable() where s.Data == scanData select s.Id).FirstOrDefault(); return "Match Found"; 

确保包含System.Linq 。 这样你的错误将被解决。