【问题标题】:How to get 2 columns from datatable in linq [duplicate]如何从linq中的数据表中获取2列[重复]
【发布时间】:2014-02-28 12:05:50
【问题描述】:

我目前有:

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

但是,我还需要检索另一列,名称:int 类型的“级别”。期望输出类似:

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

【问题讨论】:

标签: c# linq


【解决方案1】:

一种方法是匿名类型:

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

这会给你一个匿名类型的List&lt;&gt;,所以现在你可以这样做:

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"];

【讨论】:

  • Michael 我已将 id 添加到 Session 并且无法从 Session 中再次检索它 - 我试过这个:“var ids = (List>)Session["ids "]" 但给出错误
  • @user2906420:您尝试将ids 添加到Session,然后将其拉回?
  • @user2906420:请查看我的编辑,因为我试图解决持久性的需求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多