이 예제는 solrnet을 통해 Fully loose mapping으로 처리된 결과를 Datatable로 변환하는 예제입니다.

닷넷기반에서 solr를 사용하는 분들에게는 도움이 될듯합니다.


/* Fully loose mapping으로 처리 */ 
Startup.Init<Dictionary<string, object>>(string.Format("{0}:{1}/{2}/{3}", server, port, was, collectionName));
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Dictionary<string, object>>>();
var jobResult = solr.Query(new SolrQueryByField("Title", "개발자세상"), new QueryOptions
{
    Fields = new[] { resultFields }
});


private DataTable ConvertDictionaryToDataTable(ICollection<Dictionary<string, object>> jobResult)
{
    DataTable dtResult = new DataTable();

    //컬럼바인딩
    if (jobResult.Count() > 0)
    {
        Dictionary<string, object> haeders = jobResult.ElementAt(0);
        foreach (var colHead in haeders)
        {
            dtResult.Columns.Add(colHead.Key);
        }
    }

    //데이터바인딩
    foreach (var row in jobResult)
    {
        DataRow dataRow = dtResult.NewRow();

        foreach (var col in row)
        {
            dataRow[col.Key] = col.Value;
        }

        dtResult.Rows.Add(dataRow);
    }
    return dtResult;
}