2012년 9월 12일 수요일

C#에서 IList와 List

요즘 C#과 IBatis를 이용하여 프로그램을 개발하고 있다.

IBatis 사용이 익숙하지 않아 삽질의 연속이다.


public static IList<Hashtable> SelectQuery(string queryname, Hashtable parameter)
{
    string msg = string.Format(SELECT_QUERY, queryname);
    DataLog.WriteLog(_Logger, msg, parameter);
    return Mapper.Instance().QueryForList<Hashtable>(queryname, parameter);
}
위와 같이 SelectQuery() 함수를 만들어 이용하고 있는데, IBatis의 QueryForList() 함수는 IList<T>로 return한다.

IBatis의 QueryForList() 함수는 다음과 같이 정의되어 있다.
IList<T> QueryForList<T>(string statementName, object parameterObject);

아무든 IList<Hashtable>로 리턴 받은 값은 다음과 같이 사용할 수 있다.

private void btnSearch_Click(object sender, EventArgs e)
{
  IList<Hashtable> result = DBQuery.SelectQuery(SQL.SELECT_SEND_FILE_PROCESS_CHK_MASTER, GetSearchCondi());
  PrintSpreadProcessChkMaster(result);

private void PrintSpreadProcessChkMaster(IList<Hashtable> result)
{
    DefaultSheetDataModel model = new DefaultSheetDataModel();
    model.RowCount = result.Count;
    model.ColumnCount = COL_MAX;
 
    for (int i = 0; i < result.Count; i++)
    {
        model.SetValue(i, COL_ORG_ID, result[i]["HOLD_ORG_ID"].ToString());
        model.SetValue(i, COL_ORG_NAME, result[i]["HOLD_ORG_NAME"].ToString());
        model.SetValue(i, COL_FOLDER, result[i]["FOLDER"].ToString());
        model.SetValue(i, COL_FILE_NO, result[i]["FILE_NO"].ToString());
        model.SetValue(i, COL_FILE_NAME, result[i]["FILE_NM_FORMAT"].ToString());
        model.SetValue(i, COL_MAKE_PG, result[i]["MAKE_PG"].ToString());
        model.SetValue(i, COL_TRANS_TYPE, ConvertTransTypeToString(result[i]["TRANS_TYPE"].ToString()));
        model.SetValue(i, COL_MSG_SEND_YN, result[i]["MESSAGE_SEND_YN"].ToString() == "1" ? true : false);
        model.SetValue(i, COL_CHK_TIME, SetCheckTime(result[i]["CHK_TIME"].ToString()));
        model.SetValue(i, COL_CHK_ID, result[i]["CHK_ID"].ToString());
    }
    _ActiveSheet.Models.Data = model;
query에서 넘겨받은 값을 result[i]["HOLD_ORG_ID"].ToString() 과 같이 사용한다.



List<T>는 IList<T>와 조금 다르게 사용한다.


private void AddSendFileList(List<SendFile> list)
{
    DefaultSheetDataModel model = new DefaultSheetDataModel();
    model.RowCount = list.Count;
    model.ColumnCount = COL_MAX;
    for (int i = 0; i < list.Count; i++)
    {
        model.SetValue(i, COL_STATUS, "추가");
        model.SetValue(i, COL_ORG_ID, list[i]._holdOrgID);
        model.SetValue(i, COL_ORG_NAME, list[i]._holdOrgName);
        model.SetValue(i, COL_FOLDER, list[i]._folder);
        model.SetValue(i, COL_FILE_NO, list[i]._fileNo);
        model.SetValue(i, COL_FILE_NAME, list[i]._fileNameFormat);
        model.SetValue(i, COL_MAKE_PG, list[i]._makePG);
        model.SetValue(i, COL_TRANS_TYPE, ConvertTransTypeToString(list[i]._transType));
    }
    _ActiveSheet.Models.Data = model;
}

Hashtable도 참 생소하구나-_-;


댓글 없음:

댓글 쓰기