1

ここで明らかな何かが欠けているように感じます.NPocoを介してクエリを実行し、結果として異なる型の可能性のある値を任意の数取得するにはどうすればよいですか.

次のようなテーブルがあるとします。

|-------------------|------------|
| ID    |    AMOUNT | DATE       |
|-------------------|------------|
| 1     |      2300 | 01/02/2014 |
| 2     |       400 | 03/02/2014 |
| 3     |      1200 | 06/02/2014 |
| 4     |       950 | 06/02/2014 |
|-------------------|------------|

次の(MSSQL)を使用してこのテーブルにクエリを実行したい:

SELECT
MAX(DATE) AS MOST_RECENT_ORDER_DATE, SUM(AMOUNT) AS TOTAL_AMT_OF_ORDERS
FROM
ORDERS

したがって、次のようなコードを使用すると思います。ここdbで、 は NPocoDatabaseオブジェクトです。

var result = db.Query(<query string>);

問題は、NPoco の Query メソッドには型パラメーターが必要であり、何を指定すればよいかわかりません。問題は、2 つの値が実際には異なる型を持っていることです。1 つは で、もう 1 つはDateTimeですint。私は以下を使用してみました:

List<Dictionary<string, object>> result;
result = db.Query<Dictionary<string, object>>(queryString).ToList();

しかし、結果にアクセス/使用するための構文がわかりません。すべてが非常に不格好に思えます。これは間違った方法で行ったに違いありません。

要約すると:

NPoco を使用して、異なる (任意の) 型の列を返すクエリを実行し、それらの値にアクセスして使用するにはどうすればよいですか?

4

2 に答える 2

3

あなたは正しい軌道に乗っています。クエリは 1 行のみを返すため、結果から最初の辞書を簡単に取得できます。

result = db.Query<Dictionary<string, object>>(queryString)
var dictionary = result.First();

次に、クエリからの名前を使用してオブジェクトを取得できます。

dictionary["MOST_RECENT_ORDER_DATE"]
dictionary["TOTAL_AMT_OF_ORDERS"]

その後、オブジェクトを目的のデータ型に変換するだけです。(例: Convert メソッドを使用)

于 2014-09-02T06:29:39.383 に答える
3

db.FirstOfDefault<Dictionary<string, object>>(queryString)の代わりに使用db.Queryして、辞書から値を取得してください (キーは列名です)。

于 2014-09-02T06:27:48.977 に答える