Ste*_*rne 5 c# linq-to-entities
以下LINQ:
retval = ( from jm in entities.JobMasters
where jm.UserId == userId && jm.IsRemote == false
select new JobDto
{
JobMasterId = jm.JobMasterId,
ExternalTaskId = jm.ExternalTaskId,
JobDetails = ( from jd in entities.JobDetails
where jd.JobMasterId == jm.JobMasterId
select new JobDetailDto { ScreenFieldId = jd.ScreenFieldId, FieldValue = jd.FieldValue }
).ToList()
}
).ToList();
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
LINQ to Entities无法识别方法'System.Collections.Generic.List`1 [KernWcfTest.DataTransferObjects.JobDetailDto] ToList [JobDetailDto](System.Collections.Generic.IEnumerable`1 [KernWcfTest.DataTransferObjects.JobDetailDto])'方法,并且此方法无法转换为商店表达式.
以下是两个dto类:
[DataContract]
public class JobDetailDto
{
[DataMember]
public int ScreenFieldId { get; set; }
[DataMember]
public string FieldValue { get; set; }
}
[DataContract]
[KnownType(typeof(JobDetailDto))]
public class JobDto
{
[DataMember]
public int JobMasterId { get; set; }
[DataMember]
public string ExternalTaskId { get; set; }
[DataMember]
public List<JobDetailDto> JobDetails { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
问题是sub-select和JobDetails列表.我尝试添加KnownType但它没有用.
这一切都在LINQ Pad中正常工作.
有任何想法吗?
干杯
史蒂夫
不要在内部查询(JobDetails的那个)上调用ToList.错误是"你说的.ToList方法 - 它无法转换为T-SQL!"
这应该工作:
retval = ( from jm in entities.JobMasters
where jm.UserId == userId && jm.IsRemote == false
select new JobDto
{
JobMasterId = jm.JobMasterId,
ExternalTaskId = jm.ExternalTaskId,
JobDetails = from jd in entities.JobDetails
where jd.JobMasterId == jm.JobMasterId
select new JobDetailDto { ScreenFieldId = jd.ScreenFieldId, FieldValue = jd.FieldValue }
)
}
).ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,您可以在查询结束时调用ToList,因为该部分不需要转换为T-SQL.
| 归档时间: |
|
| 查看次数: |
5616 次 |
| 最近记录: |