我使用Linq查询而不是使用Sqlserver的视图。我想把它放在方法中。我的输出类型是什么?谢谢你的帮助
public ???? InsuranceWorkerView()
{
var InsuranceWorkers =(from ins_insuranceworkers in db.INS_InsuranceWorkers
join dv in db.DivisionCountry on new { InsWorkerCityID = ins_insuranceworkers.InsWorkerCityID } equals new { InsWorkerCityID = dv.DivisionID } into divisioncountry_1_join
from dv in divisioncountry_1_join.DefaultIfEmpty()
join divisioncountry in db.DivisionCountry on new { InsWorkerStateID = ins_insuranceworkers.InsWorkerStateID } equals new { InsWorkerStateID = divisioncountry.DivisionID } into divisioncountry_join
from divisioncountry in divisioncountry_join.DefaultIfEmpty()
select new
{
ins_insuranceworkers.InsWorkerID,
ins_insuranceworkers.InsWorkerCreateUserID,
ins_insuranceworkers.InsWorkerTypeID,
ins_insuranceworkers.InsWorkerFirstName,
ins_insuranceworkers.InsWorkerLastName,
ins_insuranceworkers.InsWorkerNationalCode,
ins_insuranceworkers.InsWorkerMobileNum,
ins_insuranceworkers.InsWorkerAddress,
ins_insuranceworkers.InsWorkerEmail,
City = dv.DivisionName,
State = divisioncountry.DivisionName,
InsWorkerStateID =(Int32?)ins_insuranceworkers.InsWorkerStateID,
InsWorkerCityID = (Int32?)ins_insuranceworkers.InsWorkerCityID
}).ToList();
return InsuranceWorkers;
}
答案 0 :(得分:1)
很遗憾,您无法从方法中返回anonymous types:
您不能声明字段,属性,事件或返回类型 具有匿名类型的方法。同样,你不能声明 方法,属性,构造函数或索引器的形式参数 有匿名类型。传递匿名类型或集合 包含匿名类型,作为方法的参数,您可以 将参数声明为类型对象。
因此,要么为此数据创建一些特定类型并将其返回:
public List<Foo> InsuranceWorkerView()
{
return (from i in db.INS_InsuranceWorkers
select new Foo {
InsWorkerID = i.InsWorkerID,
InsWorkerCreateUserID = i.InsWorkerCreateUserID
// etc
}).ToList();
}
或者返回object
(我觉得有点无用):
public object InsuranceWorkerView()
{
return (from i in db.INS_InsuranceWorkers
select new {
i.InsWorkerID,
i.InsWorkerCreateUserID
// etc
}).ToList();
}
答案 1 :(得分:0)
动态可能派上用场就是这种情况。
public IEnumerable<dynamic> InsuranceWorkerView()
{
var InsuranceWorkers =(from ins_insuranceworkers in db.INS_InsuranceWorkers
join dv in db.DivisionCountry on new { InsWorkerCityID = ins_insuranceworkers.InsWorkerCityID } equals new { InsWorkerCityID = dv.DivisionID } into divisioncountry_1_join
from dv in divisioncountry_1_join.DefaultIfEmpty()
join divisioncountry in db.DivisionCountry on new { InsWorkerStateID = ins_insuranceworkers.InsWorkerStateID } equals new { InsWorkerStateID = divisioncountry.DivisionID } into divisioncountry_join
from divisioncountry in divisioncountry_join.DefaultIfEmpty()
select new
{
ins_insuranceworkers.InsWorkerID,
ins_insuranceworkers.InsWorkerCreateUserID,
ins_insuranceworkers.InsWorkerTypeID,
ins_insuranceworkers.InsWorkerFirstName,
ins_insuranceworkers.InsWorkerLastName,
ins_insuranceworkers.InsWorkerNationalCode,
ins_insuranceworkers.InsWorkerMobileNum,
ins_insuranceworkers.InsWorkerAddress,
ins_insuranceworkers.InsWorkerEmail,
City = dv.DivisionName,
State = divisioncountry.DivisionName,
InsWorkerStateID =(Int32?)ins_insuranceworkers.InsWorkerStateID,
InsWorkerCityID = (Int32?)ins_insuranceworkers.InsWorkerCityID
}).ToList();
return InsuranceWorkers;
}
然后你可以使用类似的东西:
foreach (var worker in InsuranceWorkerView()) {
var id = (int)worker.InsWorkerID;
}
答案 2 :(得分:0)
您可以将新列表作为IList返回。
public IList InsuranceWorkerView()
{
var InsuranceWorkers =(from ins_insuranceworkers in db.INS_InsuranceWorkers
join dv in db.DivisionCountry on new { InsWorkerCityID = ins_insuranceworkers.InsWorkerCityID } equals new { InsWorkerCityID = dv.DivisionID } into divisioncountry_1_join
from dv in divisioncountry_1_join.DefaultIfEmpty()
join divisioncountry in db.DivisionCountry on new { InsWorkerStateID = ins_insuranceworkers.InsWorkerStateID } equals new { InsWorkerStateID = divisioncountry.DivisionID } into divisioncountry_join
from divisioncountry in divisioncountry_join.DefaultIfEmpty()
select new
{
ins_insuranceworkers.InsWorkerID,
ins_insuranceworkers.InsWorkerCreateUserID,
ins_insuranceworkers.InsWorkerTypeID,
ins_insuranceworkers.InsWorkerFirstName,
ins_insuranceworkers.InsWorkerLastName,
ins_insuranceworkers.InsWorkerNationalCode,
ins_insuranceworkers.InsWorkerMobileNum,
ins_insuranceworkers.InsWorkerAddress,
ins_insuranceworkers.InsWorkerEmail,
City = dv.DivisionName,
State = divisioncountry.DivisionName,
InsWorkerStateID =(Int32?)ins_insuranceworkers.InsWorkerStateID,
InsWorkerCityID = (Int32?)ins_insuranceworkers.InsWorkerCityID
}).ToList();
并访问该项目
foreach(var item in InsuranceWorkers)
{
var a= item.InsWorkerID; // to access the anonymous items
}
}
答案 3 :(得分:0)
为简化起见,我建议你创建一种具有所需属性的POCO类,以便正确地表示所需的投影,而不是选择它作为匿名类型,并参与讨厌的危险铸件。
创建您的POCO课程:
public class InsuranceWorker
{
public int InsWorkerId {get;set;}
public int InsWorkerCreateUserId {get;set;}
//Keep add the necessary properties here...
}
<强>用法:强>
将您的匿名选择(select new
)语句替换为我们刚才创建的已知类型:
select new InsuranceWorker
{
InsWorkerId = ins_insuranceworkers.InsWorkerID,
InsWorkerCreateUserId = ins_insuranceworkers.InsWorkerCreateUserID,
//....
}).ToList();
并返回IList<InsuranceWorker>
:
public IList<InsuranceWorker> InsuranceWorkerView()
{
....
}