【转】KeyValuePair用法

KeyValuePair用法(转)

KeyValuePair数据库

C# KeyValuePair<TKey,TValue>的用法。结构体,定义可设置或检索的键/值对。也就是说咱们能够经过它记录一个键/值对这样的值。好比咱们想定义一个ID(int类型)和Name(string类型)这样的键/值对,那么能够这样使用。函数

/// <summary>
/// 设置键/值对
/// </summary>
/// <returns></returns>
private KeyValuePair<int, string> SetKeyValuePair()
{
    int intKey = 1;
    string strValue = "My value";
    KeyValuePair<int, string> kvp = new KeyValuePair<int, string>(intKey, strValue);
    return kvp;
}spa

 

/// <summary>
/// 得到键/值对
/// </summary>
private void GetKeyValuePairDemo()
{
    KeyValuePair<int, string> kvp = SetKeyValuePair();
    int intKey = kvp.Key;
    string strValue = kvp.Value;
}.net

若是想使用泛型的话,也是差很少这样子,通常批量读取数据的时候,当只须要读两个字段(Id and Name)时,若是想不用Model类,并配合泛型使用KeyValuePair,示例:blog

一、从数据库中读取数据索引

 

/// <summary>
/// 获取全部企业的Id(enterprise_id)及英文名 (enterprise_name_eng)
/// </summary>
/// <returns>enterprise_info表中的全部企业 Id及英文名</returns>
public List<KeyValuePair<long,string>> GetEnterpriseIdAndNameEngList()
{
    //enterprise_id键和enterprise_name_eng 对
    List<KeyValuePair<long, string>> lstIdKeyNameEngValue = new List<KeyValuePair<long, string>>();get

 

 

 

 

    string cmdText = "select enterprise_id, enterprise_name_eng from enterprise_info";
    using (OracleDataReader reader = OracleHelper.ExecuteReader(OracleHelper.OracleConnString, CommandType.Text, cmdText, null)) 
    {
        try
        {
            MyEventLog.Log.Debug ("cmdText= " + cmdText);
            while (reader.Read())
            {
                KeyValuePair<long, string> idKeyNameEngValue = new KeyValuePair<long, string> (
               &nbs p;    reader.IsDBNull(0) ? 0 : reader.GetInt64(0), 
                 ;    reader.IsDBNull(1) ? string.Empty : reader.GetString(1) 
                 ;    );
                lstIdKeyNameEngValue.Add (idKeyNameEngValue);
            } 
            OracleHelper.DataReaderClose(reader);
        } 
        catch (OracleException e) 
        {
            MyEventLog.Log.Error ("cmdText= " + cmdText);
            MyEventLog.Log.Error(e);
            throw e;
        }
    } 
    return lstIdKeyNameEngValue;
}cmd

 

二、在业务中处理数据string

 

/// <summary>
/// 函数做用:
/// 一、返回从待导入的企业名称中获的有效企业Id集。
/// 二、返回有效的企业行号集。
/// 三、返回无效的企业行号集。
/// </summary>
/// <param name="lstEnterpriseNameEn">待导入的企业名称(英文)集</param>
/// <param name="lstValidRowsIndex">Excel表中有效的企业Id行集</param>
/// <param name="lstInvalidRowsIndex">Excel表中无效的企业Id行集</param>
/// <returns>返回有效的行的索引列表</returns>
public List<long> PrepareForImport(List<string> lstEnterpriseNameEn, out List<int> lstValidRowsIndex, out List<int> lstInvalidRowsIndex)
{
    //有效的企业Id行
    lstValidRowsIndex = new List<int>();
    //无效的企业Id行
    lstInvalidRowsIndex = new List<int>();     //获取全部的企业Id及英文名
    List<KeyValuePair<long, string>> lstIdKeyNameEngValue = dal.GetEnterpriseIdAndNameEngList();     //用于存放有效的企业的Id,即若是能够在enterprise_info表中找到此企业的英文名,那么表示此企业存在,所以把存在的企业Id获取出来,存放于此变量
    List<long> lstValidEnterpriseId = new List<long>();     //经过如下循环能够得到能够有效的企业Id列表
    for (int i = 0; i < lstEnterpriseNameEn.Count; i++)
    {
        foreach (KeyValuePair<long, string> kvp in lstIdKeyNameEngValue)
        {
            if (lstEnterpriseNameEn[i] == kvp.Value)
            {
                //得到有效行索引
                lstValidRowsIndex.Add(i);                 //得到有效的企业Id
                lstValidEnterpriseId.Add(kvp.Key);                 //找到了有效的ID后立刻跳出内循环,回到外循环
                continue;
            }
        }         if (!lstValidRowsIndex.Contains(i) && !lstInvalidRowsIndex.Contains(i))
        {
            //取得无效行索引
            lstInvalidRowsIndex.Add(i);
        }
    }
    return lstValidEnterpriseId;
}io

相关文章
相关标签/搜索