LINQ结果的Datacontext对象类型

时间:2016-10-12 08:28:57

标签: c# linq

假设有两个类

webView.sizeThatFits(CGSizeZero)

我为列表的ItemsSource执行连接,

Class A
{
  var a,b,c;
}
Class X
{
   var x,y,z;
}

我现在想要点击按钮

从列表中检索datacontext
(from A in a1 join X in x1 on A.a equals X.x select new {A.b, A.c, X.y, X.z}

我认为DataContext应该有一个类,如LINQ操作所生成的

var v = (Button)sender.DataContext as ???

任何人都可以帮助从这个LINQ生成的类中检索数据 所以我可以访问

Class ???
{
  var b,c,y,z;
}

3 个答案:

答案 0 :(得分:0)

不要在LINQ查询中创建匿名对象,只需使用自己定义的某个对象。

foo

然后

public class MyData
{
    public int b { get; set; }
    public int c { get; set; }
    public int y { get; set; }
    public int z { get; set; }
}

另请注意,您无法创建属性声明为from A in a1 join X in x1 on A.a equals X.x select new MyData() { b = A.b, c = A.c, y = X.y, z = X.z } 的{​​{1}}。只有在声明局部变量时才能使用关键字class

答案 1 :(得分:0)

尝试使用动态类型,例如

var v = (Button)sender.DataContext as dynamic;

//Then access the values as v.b, e.t.c

答案 2 :(得分:0)

您正在错误地创建匿名对象。

select new {A.b, A.c, X.y, X.z}

应该写

select new {b=A.b, c=A.c, y=X.y, z=X.z}

然后,您可以使用v.b,v.c等访问属性。

您创建的对象(如果它完全有效)创建了名为' A.b',' A.c',' X.y' ,和' X.z'