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

use*_*420 4 c# linq

我目前有:

var ids = dt.AsEnumerable().Select(x => (int)x["Id"]).ToList();
Run Code Online (Sandbox Code Playgroud)

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

var<int,int> ids = ....
Run Code Online (Sandbox Code Playgroud)

Mik*_*oud 6

一种方法是匿名类型:

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

这将给你一个List<>匿名类型,所以现在你可以做这样的事情:

var level = ids[0].Level
Run Code Online (Sandbox Code Playgroud)

更新:如果你将不得不将它们存储Session为持久性,那么我建议建立一个真实的类型(class),让我们Foo为这个例子调用它.这会将代码更改为:

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

然后当你需要把它们拿出来时Session:

var ids = (List<Foo>)Session["ids"];
Run Code Online (Sandbox Code Playgroud)