簡體   English   中英

截斷Datacolumn C#

[英]Truncate Datacolumn C#

我正在使用C#。

我將ODBC DSN連接帶入了DataTable。 第一列是“分支”。

例:

BRANCH-----| TYPE-----| ID-----|

1V--------------|   R-----------|   ZZ

1A--------------|   R-----------|   ZZ

3---------------|   W-----------|   VW

2V--------------|   R-----------|   VW

1---------------|   R-----------|   NI

4---------------|   I-----------|   MA

3B--------------|   R-----------|   SZ

我想更改第一列,使其僅包含第一個字符。

看起來像這樣。

BRANCH-----| TYPE-----| ID-----|

1---------------|   R-----------|   ZZ

1---------------|   R-----------|   ZZ

3---------------|   W-----------|   VW

2---------------|   R-----------|   VW

1---------------|   R-----------|   NI

4---------------|   I-----------|   MA

3---------------|   R-----------|   SZ

請幫助我嘗試了許多示例,但無法使其正常工作。

根據您需要使用表達式創建列的需要,您可以僅在表達式中使用substring 請參閱有關DataColumn.Expression的MSDN信息。

我相信第一個字符在索引1

dcUnits.Expression = string.Format("SUBSTRING({0}, 1, 1)+''+{1}+''+{2}", "BRANCH", "TYPE", "ID");

我使用RegEx來獲取所有數字,所以如果您有兩位數字,它將可以使用。 如果不起作用,請嘗試使用索引號From:row [“ BRANCH”] To:row [0]

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

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("BRANCH", typeof(string));
            dt.Columns.Add("TYPE", typeof(string));
            dt.Columns.Add("ID", typeof(string));

            dt.Rows.Add(new object[] { "1V", "R", "ZZ"});
            dt.Rows.Add(new object[] { "1A", "R", "ZZ"});
            dt.Rows.Add(new object[] { "3", "W", "V"});
            dt.Rows.Add(new object[] { "2V", "R", "VW"});
            dt.Rows.Add(new object[] { "1", "R", "NI"});
            dt.Rows.Add(new object[] { "4", "I", "MA"});
            dt.Rows.Add(new object[] { "1B", "R", "SZ"});

            foreach (DataRow row in dt.AsEnumerable())
            {
                row["BRANCH"] = Regex.Match(row["BRANCH"].ToString(), "\\d+").Value.ToString();
            }

        }
    }
}
​

遍歷您的數據表,並在每一行中重置BRANCH值。

        foreach (DataRow row in dt.Rows)
        {
            row["BRANCH"] = row["BRANCH"].ToString().Substring(0,1);
            Console.WriteLine(row["BRANCH"].ToString());
        }

這是包含您提供的數據的完整工作版本: https : //dotnetfiddle.net/pJzeAO

注意:我的重置代碼與先前的答案不同,它將其重置為“第一個字符”而非數字值。 我相信“第一個字符”是您在問題中所要的。

兩種選擇都在那里。 使用適合您情況的東西。 希望能幫助到你。

暫無
暫無

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

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