第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c# - 如何使用內(nèi)置庫將字符串的DataTable映射到C#中的整數(shù)DataTable?

c# - 如何使用內(nèi)置庫將字符串的DataTable映射到C#中的整數(shù)DataTable?

PHP
SMILET 2022-01-09 10:00:19
我有一組 DataTables,每個都有一組行和一組列,所有字符串。我正在尋找最好的方法(即最短的代碼長度和可選的最有效的性能)將這些數(shù)據(jù)表中的每一個映射到具有整數(shù)值的數(shù)據(jù)表,這樣相同的字符串將始終由相同的整數(shù)值表示跨所有表,也在同一個表中(不編寫我自己的循環(huán)/等,因為一種選擇是循環(huán)所有數(shù)據(jù)并從字符串中創(chuàng)建整數(shù))。我的問題是:c# 中是否有任何內(nèi)置庫可以通過調(diào)用方法來執(zhí)行此任務(wù)?假設(shè): a) 有數(shù)千個表,表中有數(shù)百萬個條目。b) 解決方案可能區(qū)分大小寫或不區(qū)分大小寫。假設(shè)這樣的例子:DataTableInStrings1.Rows[10]["Column10"] = "val1";DataTableInStrings2.Rows[2]["Column1"] = "val1";預(yù)期的短代碼:DataTable dataTableInIntegers1 = LibIAmAfter.MethodIAmAfter(DataTableInStrings1)DataTable dataTableInIntegers2 = LibIAmAfter.MethodIAmAfter(DataTableInStrings2)預(yù)期結(jié)果dataTableInIntegers1.Rows[10]["Column10"]=12; dataTableInIntegers2.Rows[2]["Column1"]=12;而整數(shù) 12 可以是任何值。這里是隨機選擇來說明目標(biāo)的。==> 另一個幫助理解問題的例子:row1InStrings: ("abc","def","abc","zxv","was","morning","def","dr","tr","uy");row2InStrings: ("abc2","def2","abc3","zxv4","was4","morning2","def2","dr3","tr3","uy");映射后的示例結(jié)果:row1InIntegers: 1,2,1,3,4,5,2,6,7,8row2InIntegers: 10,11,12,14,15,16,11,17,18,8
查看完整描述

2 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊

一種方法是使用 aDictionary<string, int>將單元格數(shù)據(jù)存儲為鍵,將映射整數(shù)存儲為值。


請注意,您不必一次用整個數(shù)據(jù)集填充映射。只要您維護一個映射字典,您就可以在訪問項目時簡單地填充它。


請注意,這只會保證字符串的值是唯一的,但在后續(xù)運行中不一定是相同的值(因為這些值基于請求 id 的時間而不是字符串本身)。


像這個帶有私有字段和訪問方法的靜態(tài)類應(yīng)該可以工作(盡管不是線程安全的):


public static class Mapper

{

    private static readonly Dictionary<string, int> Mapping = 

        new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);


    public static int GetId(string value)

    {

        int result;


        if (!Mapping.TryGetValue(value, out result))

        {

            result = Mapping.Count + 1;

            Mapping.Add(value, result);

        }


        return result;

    }

}

使用此方法,我們可以根據(jù)需要獲取映射,并且僅在必要時填充字典:


DataTable tbl1 = new DataTable("table1");

tbl1.Columns.Add(new DataColumn("col1"));

tbl1.Columns.Add(new DataColumn("col2"));

tbl1.Columns.Add(new DataColumn("col3"));

tbl1.Columns.Add(new DataColumn("col4"));

tbl1.Columns.Add(new DataColumn("col5"));

tbl1.Columns.Add(new DataColumn("col6"));

tbl1.Columns.Add(new DataColumn("col7"));

tbl1.Columns.Add(new DataColumn("col8"));

tbl1.Columns.Add(new DataColumn("col9"));

tbl1.Columns.Add(new DataColumn("col10"));


tbl1.Rows.Add("abc", "def", "abc", "zxv", "was", "morning", "def", "dr", "tr", "uy");

tbl1.Rows.Add("abc2", "def2", "abc3", "zxv4", "was4", "Morning", "def2", "dr3", "tr3", "uy");


// Output mappings, which populates the dictionary     

// only when needed as each mapping is requested

foreach (DataRow row in tbl1.Rows)

{

    Console.WriteLine(string.Join(",", 

        row.ItemArray.Select(item => Mapper.GetId(item.ToString()))));

}

輸出

http://img1.sycdn.imooc.com//61da41d40001d21603770188.jpg

查看完整回答
反對 回復(fù) 2022-01-09
?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗 獲得超7個贊

您可以使用確定性 guid 來創(chuàng)建唯一的哈希。此外,您可以將值本身用作它自己的唯一哈希。如果由于某種原因,您無法向用戶顯示原始值但仍想在列表中找到它,我只能看到這很有用。例如,一組密碼。


    [TestMethod]

    public void test_sum_stringchars()

    {

        string tmp = "foobar5";

        Console.WriteLine("Value = " + tmp.ToCharArray().Sum(x => x));

        // 686

        Console.WriteLine("Value = " + ToGuidKey(tmp));

        // 79ceeb8d


        tmp = "foobar6";

        Console.WriteLine("Value = " + tmp.ToCharArray().Sum(x => x));

        // 687

        Console.WriteLine("Value = " + ToGuidKey(tmp));

        // f1f08c51


        tmp = "goobar5";

        Console.WriteLine("Value = " + tmp.ToCharArray().Sum(x => x));

        // 687

        Console.WriteLine("Value = " + ToGuidKey(tmp));

        // f7da9f42


        tmp = "foocar5";

        Console.WriteLine("Value = " + tmp.ToCharArray().Sum(x => x));

        // 687

        Console.WriteLine("Value = " + ToGuidKey(tmp));

        // 7698c7ec

    }

    public static Guid ToGuid(string src)

    {

        byte[] stringbytes = System.Text.Encoding.UTF8.GetBytes(src);

        byte[] hashedBytes = new System.Security.Cryptography

            .SHA1CryptoServiceProvider()

            .ComputeHash(stringbytes);

        Array.Resize(ref hashedBytes, 16);

        return new Guid(hashedBytes);

    }

    public static string ToGuidKey(string src)

    {

        return ToGuid(src).ToString().Split('-').First();

    }


查看完整回答
反對 回復(fù) 2022-01-09
  • 2 回答
  • 0 關(guān)注
  • 218 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號