我创建了一个应用程序,用户可以根据国家和地区的规范访问该应用程序;单个用户可以是多个国家的成员。所以我创建了两个表,一个用于用户的详细信息&另一个用于存储乡村餐桌。
我尝试过的表格设计:-
1st表格(Users table):- UserID (Primary Key), Name, EmailId, UserRole
2nd表(Country table) :- UserId (foreign key),CountryId (primary key), Country_name
我创建了ASP.NET MVC
GET
&CCD_ 5api&在单个Get Request (api/GetUser(id))
中,我想要可以获得的该用户的全部数据通过在这两个表之间使用联接查询。
代码:-
public IQueryable<tblUserRecord> GettblUserRecords()
{
var query = (from g in db.tblUserRecords
join u in db.tblCountryNames on g.UserId equals u.UserId
select new { g, u, });
return query;
}
我面临的问题/错误:-
严重性代码描述项目文件行禁止显示状态错误CS0266无法隐式转换类型'System.Linq.IQUERABLE<>'到"System.Linq.IQueryable"。显式转换存在(你错过了一个演员阵容吗?)
为了解决上述问题,我尝试将函数的返回类型更改为List<tblUserRecord>
,还将return query
更改为return query.toList()
。但是什么都不起作用
注意:在创建实体模型时,我选择了两个表。
如果您想返回tblUserRecord
模型和tblCountryName
模型中的数据,那么您可以创建一个包装器模型来保存这些数据,并让您的方法返回这些数据。这可能看起来像:
public class UserAndCountry
{
public tblUserRecord UserRecord {get; set;}
public tblCountryName CountryRecord {get; set;}
}
那么你查询数据的方法看起来像:
public IQueryable<UserAndCountry> GettblUserRecords()
{
var query = (from g in db.tblUserRecords
join u in db.tblCountryNames on g.UserId equals u.UserId
select new UserAndCountry { UserRecord = g, CountryRecord = u });
return query;
}
为了详细说明您收到的错误,这并没有发生,因为正如您所提到的,返回的是IQueryable
与List
。之所以会发生这种情况,是因为您选择了一个匿名对象来构建IQueryable
,但您的方法将返回类型定义为IQueryable<tblUserRecord>
。
还要注意,按照惯例,类名在.NET中通常是大写的