2

我尝试在 LINQ 上找到一些动态添加强类型的引用,例如静态我有:

        var rowColl = _data.AsEnumerable();
        var json = (from r in rowColl
                    select new
                    {
                        name = r.Field<string>("name"),
                        id = r.Field<int>("id"),
                    }).ToList();

现在我感兴趣的是是否可以在运行时动态添加“名称”和“id”,因为数据表“_data”中提供了信息,我认为有一个简单的解决方案但是找不到任何参考

4

1 回答 1

0

最好的做法是尽可能避免使用“var”作为您的类型。看起来 rowColl 的类型是 IEnumerable<DataRow>。如果这是真的,那么我会看看您可以在 DataRow 类中使用什么(请参阅msdn 文档)。

鉴于 rowColl 实际上是 IEnumerable<DataRow>... 如果列的顺序始终相同,那么您可以在 select 语句中执行类似 r[0] 和 r[1] 的操作,即

var json = (from r in rowColl
            select new
            {
                name = r[0], // Where 0 is the index of the "name" column
                id = r[1],
            }).ToList();

如果它向您抱怨类型安全,那么您可以使用 int.Parse() 将字符串转换为 int 并在列上使用 .ToString() 扩展名。

于 2013-10-08T17:50:59.270 回答