繁体   English   中英

C# 需要存储一个解析版本的 SQL 服务器表,使用datatable或者list

[英]C# need to store a parsed version of SQL Server table, use datatable or list

我是 C# 的新手。 我知道数据表对于读取整个 SQL 表并将数据输出到 griddataview 非常有效。 但是,在将数据存储到我的 griddataview 之前,我需要做一些解析。 我正在考虑逐行阅读表格并在适用时对数据进行分组。 数据表或列表是否更适用于我的情况?

ORIGINAL TABLE                    PARSED TABLE I need to pass to datagridview
Name    Workdate                  Name     M T W TH F SAT SUN
Nicole     WED                    Nicole   Y   Y  Y
Nicole     THR                    Jason      Y
Nicole     MON
Jason      Tue

尝试以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string, string> dict = new Dictionary<string, string>() {
                {"MON", "M"},{"TUE", "T"},{"WED", "W"},{"THR", "TH"},{"FRI", "F"},{"SAT", "SAT"},{"SUN", "SUN"}};
            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Workdate", typeof(string));
            dt.Rows.Add(new object[] { "Nicole", "WED" });
            dt.Rows.Add(new object[] { "Nicole", "THR" });
            dt.Rows.Add(new object[] { "Nicole", "MON" });
            dt.Rows.Add(new object[] { "Jason", "TUE" });

            DataTable pivot = new DataTable();
            pivot.Columns.Add("Name",typeof(string));
            DataColumn[] columns = dict.Select(x => new DataColumn(x.Value, typeof(string))).ToArray();
            pivot.Columns.AddRange(columns);

            var people = dt.AsEnumerable().GroupBy(x => x.Field<string>("Name")).ToArray();
            foreach (var person in people)
            {
                DataRow pivotRow = pivot.Rows.Add();
                pivotRow["Name"] = person.Key;
                foreach (DataRow row in person)
                {
                    string day = row.Field<string>("Workdate");
                    pivotRow[dict[day]] = "Y";
                 
                }
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM