3

c#とLinqToSqlを使用して、データベーステーブルをクエリし、単一の一意のレコードを返します。

質問: クエリの結果を、ディクショナリキーとしてのデータベーステーブルの列名とディクショナリ値としてのデータベーステーブルの列値を使用してディクショナリに配置するにはどうすればよいですか。

注:テーブルの列名の名前や番号が常にわかるとは限りません。

Dictionary<string, string> QueryResult = new Dictionary<string, string>

var UniqueRecord = (from tbl DataContext.Table
                                 where tbl.ColumnName1.Equals(Parameter1) 
                                 && tbl.ColumnName2.Equals(Parameter2)
                                 select tbl);

//varUniqueRecordを辞書に追加するにはどうすればよいですか

================================================== ================================

私は最終的にこれを使用しました

================================================== ================================

var UniqueRecord = (from tbl DataContext.Table
                                 where tbl.ColumnName1.Equals(Parameter1) 
                                 && tbl.ColumnName2.Equals(Parameter2)
                                 select tbl);


 foreach(var item in OnlineBezeichnungRekord)
 {
   var properties = item.GetType()
                        .GetProperties()
                        .ToDictionary(p => p.Name, p => p.GetValue(item, null).ToString());

   Dictionary<string,string> DictionaryValues = properties;

  }
4

1 に答える 1

1

を手動に変換するのがいかに簡単かを考えると、私はあなたの場合には行きませんDataRow、そしてただループをします:DictionaryEnumerable.ToDictionary

Private Function GetDictionaryFromDataRow(dr As DataRow) As Dictionary(Of String, Object)
  Dim dict As New Dictionary(Of String, Object)
  For Each col As DataColumn In dr.Table.Columns
    dict.Add(col.ColumnName, dr.Item(col))
  Next
  Return dict
End Function

次に、クエリがを返すことを確認してください。DataRowしたがって、を使用しますUniqueRecord(0)

于 2012-11-19T14:30:28.010 に答える