![](/img/trans.png)
[英]Silverlight: How do I update properties dynamically in accordance with a current settings class?
[英]How do I modify this join in accordance with a model change involving inheritance?
我对项目的模型进行了更改,但有一个联接似乎无法弄清如何响应模型更改而进行更改。 这是原始的模型设置以及连接代码:
query = query.Join(db.Reports,
x => new
{
x.SourceUser,
x.TargetUser
},
x2 => new
{
SourceUser = x2.TargetUser,
TargetUser = x2.SourceUser
},
(x, x2) => new { x, x2 }).Where(f => (f.x.SourceUser == user)).Select(p => p.x);
这种联接的结果是,结果查询仅提供相互之间的报告关系(例如,双方都相互报告了)。 直到我进行模型更改之前,此连接都可以正常工作。
这是新的模型设置
这是我尝试修改联接代码的尝试
query = query.Join(db.Reports,
x => new
{
x.SourceUser,
x.TargetReportable
},
x2 => new
{
SourceUser = x2.TargetReportable,
TargetReportable = x2.SourceUser
},
(x, x2) => new { x, x2 }).Where(f => (f.x.SourceUser == user)).Select(p => p.x);
这将导致以下错误:
无法从用法中推断方法'System.Linq.Enumerable.Join(System.Collections.Generic.IEnumerable,System.Collections.Generic.IEnumerable,System.Func,System.Func,System.Func)的类型参数。 尝试显式指定类型参数。
我假设SourceUser的类型为UserAccount,TargetReportable的类型为Reportable。 λ比较苹果和桔子。 您需要强制sourceuser键入Reportable,因为它继承了Reportable。
query = query.Join(db.Reports,
x => new
{
T = (Reportable)x.SourceUser,
x.TargetReportable
},
x2 => new
{
SourceUser = x2.TargetReportable,
TargetReportable = (Reportable)x2.SourceUser
},
(x, x2) => new { x, x2 }).Where(f => (f.x.SourceUser == user)).Select(p => p.x);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.