在linq中设置来自多个联接的字段值
本文关键字:字段 linq 设置 | 更新日期: 2023-09-27 18:26:21
我有三种型号:
public class Job
{
public string CustomerRef {get;set;}
public string AddressRef {get;set;}
public string JobStatusRef {get;set;}
public string CustomerName {get;set;}
public string AddressTown {get;set;}
public string JobStatusName {get;set;}
}
public class JobStatus
{
public string JobStatusRef {get;set;}
public string JobStatusName {get;set;}
}
public class Customer
{
public string CustomerRef {get;set;}
public string AddressTown {get;set;}
}
所有这些模型都填充到列表对象中。
我想要一个返回包含字段的列表的方法:
CustomerName;
AddressTown;
JobStatusName;
使用来自其他2个列表对象的值设置
我创建了这个加入:
var query_join4 = from j in Data
join js in JobStatus.Data
on j.JobStatusRef equals js.JobStatusRef
join c in Customer.Data
on j.CustomerRef equals c.CustomerRef
select new
{
//what goes here??
};
此方法必须返回一种类型的List
我到处玩,但没有成功。。。
看起来你已经非常接近了。假设查询的其余部分是可以的,您应该能够通过选择所需的字段来创建匿名类型,如下所示:
var query_join4 = from j in Data
join js in JobStatus.Data
on j.JobStatusRef equals js.JobStatusRef
join c in Customer.Data
on j.CustomerRef equals c.CustomerRef
select new
{
j.CustomerName,
c.AddressTown,
js.JobStatusName
};
如果您需要将其传递到程序的其他地方使用,您可能需要创建一个单独的类来存储这些值。
public class CustomerResult
{
public string CustomerName { get; set; }
public string AddressTown { get; set; }
public string JobStatusName { get; set; }
}
...
select new CustomerResult
{
CustomerName = j.CustomerName,
AddressTown = c.AddressTown,
JobStatusName = js.JobStatusName
}
如果您只想返回一个List<Job>
,那么使用该类而不是新的类。
select new Job
{
CustomerName = j.CustomerName,
AddressTown = c.AddressTown,
JobStatusName = js.JobStatusName
// you may want to add the other fields too so your Job class is fully populated
}