簡體   English   中英

按一對列分組時如何獲取一組值作為列表

[英]How to get a set of values as a list when grouped by a pair of columns

我有一個具有以下值的數據表

id名稱日期

1 a 5/3/2011

1 a 6/4/2011

我想用每個ID /名稱對檢索帶有關聯日期列表的值。

我建議您創建一個封裝所有數據的類,然后可以創建適當類型的List<T> 您將在DataTable中為每個條目創建新類的實例。

如果使用強類型的數據集,則可以根據需要使用生成的DataRow類型。

(不清楚“將列表存儲為單個條目”是什么意思-整個表還是每行一個條目?)

沒有用法的上下文很難回答。 這將被正確使用,並傳達給系統的其他部分嗎? 下面假設它未與系統的其他部分通信

var list = (from e in DataTable.Rows.AsEnumerable()
            select new {
               id = e["id"],
               Name = e["Name"], 
               data = e["data"]
             }).ToList()

創建一個映射到您的表的類。 您可以使用EntityFramework,LINQ to SQL,nHibernate或自定義ORM作為這些對象從表中檢索數據。 選擇對象,然后使用LINQ分組運算符創建匿名對象(或帶有日期列表的其他類)。

public class Foo
{
   public int ID { get; set; }
   public sring Name { get; set; }
   public DateTime Date { get; set;
}

public class Bar
{
   public int ID { get; set; }
   public string Name { get; set; }
   public List<DateTime> Dates { get; set; }
}

public class FooDataContext : DbContext
{
   IDbSet<Foo> Foos { get; set; }
}

using (var context = new FooDataContext())
{
     List<Bar> bars = context.Foos
                             .GroupBy( f => new { f.ID, f.Name } )
                             .Select( g => new Bar
                              {
                                  ID = g.Key.ID,
                                  Name = g.Key.Name,
                                  Dates = g.Select( f => f.Date )
                              });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM