如何从linq中的数据表中获取2列

时间:2014-02-04 13:29:29

标签: c# linq

我目前有:

var ids = dt.AsEnumerable().Select(x => (int)x["Id"]).ToList();

但是我还需要检索另一列,名称:int类型的“level”。期待输出像:

var<int,int> ids = ....

1 个答案:

答案 0 :(得分:6)

一种方法是匿名类型:

var ids = dt.AsEnumerable().Select(x => new
{
    Id = (int)x["Id"],
    Level = (int)x["level"]
}).ToList();

这将为您提供该匿名类型的List<>,所以现在您可以执行以下操作:

var level = ids[0].Level

更新:如果您必须将它们存储在Session中以保持持久性,那么我建议您构建一个真实类型(class),让我们称之为这个例子是Foo。这会将代码更改为:

var ids = dt.AsEnumerable().Select(x => new Foo
{
    Id = (int)x["Id"],
    Level = (int)x["level"]
}).ToList();

然后当你需要将它们从Session中取出时:

var ids = (List<Foo>)Session["ids"];