如何将以下行转换为Generic LINQ语句

时间:2010-11-12 22:45:26

标签: c# linq

我在C#中有以下几行代码  使用DataTables获取数据 这非常通用,可以帮助我使用多个表格。

object obj = ((DataRowView)editingElement.DataContext).Row[this.SelectedValuePath];

我想将此语句更改为通用LINQ语句,以便我也可以将它与多个LINQ表一起使用。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为您不能使用LINQ来使您编写的代码更好或更优雅。我假设editingElement.DataContext的类型是object,所以无论如何你都需要编写演员。如果您忘记了转换,您的代码只是索引访问:

var rows = (DataRowView)editingElement.DataContext;
object obj = rows.Row[this.SelectedValuePath]; 

LINQ没有任何可以使索引更好的功能,所以我认为这是你能得到的最好的。一个可能的丑陋的事情是你得到object作为结果,你需要将其转换为其他类型(例如CustomerInfo)。

如果您从一开始就使用LINQ(填充DataContext的数据),您可能会写这样的内容来访问客户:

var rows = (IEnumerable<CustomerInfo>)editingElement.DataContext;
CustomerInfo info = rows.Row[this.SelectedValuePath]; 

这会更优雅,因为你只需要一个演员。但是,我认为您的代码很好,LINQ无法帮助您(在这段代码中)。