找不到查询模式的实现
在我的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 。 这样你的错误将被解决。