[英]what is output type of method when returns result of linq query?
I use Linq query instead of using Sqlserver's view. 我使用Linq查询而不是使用Sqlserver的视图。 I want to put it in method .what is my output type?
我想将其放在方法中。我的输出类型是什么? thanks for helping
谢谢你的帮助
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;
}
Unfortunately you can't return anonymous types from methods: 不幸的是,您不能从方法中返回匿名类型 :
You cannot declare a field, a property, an event, or the return type of a method as having an anonymous type.
您不能将字段,属性,事件或方法的返回类型声明为具有匿名类型。 Similarly, you cannot declare a formal parameter of a method, property, constructor, or indexer as having an anonymous type.
同样,您不能将方法,属性,构造函数或索引器的形式参数声明为具有匿名类型。 To pass an anonymous type, or a collection that contains anonymous types, as an argument to a method, you can declare the parameter as type object.
要将匿名类型或包含匿名类型的集合作为方法的参数传递,可以将参数声明为类型对象。
So, either create some specific type for this data and return it: 因此,要么为此数据创建一些特定类型并返回它:
public List<Foo> InsuranceWorkerView()
{
return (from i in db.INS_InsuranceWorkers
select new Foo {
InsWorkerID = i.InsWorkerID,
InsWorkerCreateUserID = i.InsWorkerCreateUserID
// etc
}).ToList();
}
Or return object
(which I find a little useless): 或返回
object
(我发现它没什么用):
public object InsuranceWorkerView()
{
return (from i in db.INS_InsuranceWorkers
select new {
i.InsWorkerID,
i.InsWorkerCreateUserID
// etc
}).ToList();
}
That's the case when dynamic may come in handy. 当动态可能派上用场时就是这种情况。
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;
}
And then you can use something like: 然后,您可以使用类似:
foreach (var worker in InsuranceWorkerView()) {
var id = (int)worker.InsWorkerID;
}
You can return the new list as IList. 您可以将新列表作为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();
And to access the item 并访问该项目
foreach(var item in InsuranceWorkers)
{
var a= item.InsWorkerID; // to access the anonymous items
}
}
To simplify things, I would suggest you to create a kind of a POCO class with the required properties in order to represent the required projection properly instead of selecting it as anonymous type and get involved with annoying dangerous castings. 为简化起见,我建议您创建一种具有所需属性的POCO类,以便正确表示所需的投影,而不是将其选择为匿名类型并参与到恼人的危险铸件中。
Create your POCO class as: 创建您的POCO类为:
public class InsuranceWorker
{
public int InsWorkerId {get;set;}
public int InsWorkerCreateUserId {get;set;}
//Keep add the necessary properties here...
}
Usage: 用法:
Replace your anonymous selection ( select new
) statement with the known type which we've just created above: 将您的匿名选择(
select new
)语句替换为我们上面刚刚创建的已知类型:
select new InsuranceWorker
{
InsWorkerId = ins_insuranceworkers.InsWorkerID,
InsWorkerCreateUserId = ins_insuranceworkers.InsWorkerCreateUserID,
//....
}).ToList();
and return IList<InsuranceWorker>
: 并返回
IList<InsuranceWorker>
:
public IList<InsuranceWorker> InsuranceWorkerView()
{
....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.