LINQ结果的对象类型
本文关键字:类型 对象 结果 LINQ | 更新日期: 2023-09-27 18:12:37
假设有两个类
Class A
{
var a,b,c;
}
Class X
{
var x,y,z;
}
我执行一个连接列表的ItemsSource,
(from A in a1 join X in x1 on A.a equals X.x select new {A.b, A.c, X.y, X.z}
我现在想从单击按钮
时的列表中检索数据上下文var v = (Button)sender.DataContext as ???
我认为DataContext应该有一个如下的类,由LINQ操作
生成Class ???
{
var b,c,y,z;
}
有谁能帮我从LINQ生成的类中检索数据吗所以我可以访问
v.b
v.c
v.y
v.z
尝试使用动态类型,例如
var v = (Button)sender.DataContext as dynamic;
//Then access the values as v.b, e.t.c
不要在LINQ查询中创建匿名对象,而是使用自己定义的对象。
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
}
还需要注意的是,您不能创建像var prop { get; set; }
一样声明属性的class
。
var
。您正在错误地创建匿名对象。
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'的空属性