店舗が店舗ポータルにログオンしてからログオンしてからのデータを記録するテストデータベースがあります。Linq - 値が0の場合、次の値を得るにはどうすればいいですか
例: (ちょうど可視化の目的のために - ない実際のデータベース)
Stores
Id Description Address City
1 Candy shop 43 Oxford Str. London
2 Icecream shop 45 Side Lane Huddersfield
Connections
Id Store_Ref Start End
1 2 2011-02-11 09:12:34.123 2011-02-11 09:12:34.123
2 2 2011-02-11 09:12:36.123 2011-02-11 09:14:58.125
3 1 2011-02-14 08:42:10.855 2011-02-14 08:42:10.855
4 1 2011-02-14 08:42:12.345 2011-02-14 08:50:45.987
5 1 2011-02-15 08:35:19.345 2011-02-15 08:38:20.123
6 2 2011-02-19 09:08:55.555 2011-02-19 09:12:46.789
私は、データベースからさまざまなデータを取得する必要があります。私はすでに最大と平均接続時間を得ています。 (だからおそらく非常に自明である..)私はまた、どの接続が最小限に抑えられたかに関するいくつかの情報を持っている必要があります。私はLinqのMin()関数をすぐに考えましたが、わかるようにデータベースには瞬時に開始し終了した接続も含まれています。したがって、そのデータは実際にはデータ解析に「有効」ではありません。
私の質問は最小値を取得する方法ですが、値が0の場合は、最も低い次の値を取得します。
私のLINQクエリこれまで(MIN()関数を実装する):
var min = from connections in Connections
join stores in Stores
on connections.Store_Ref equals stores.Id
group connections
by stores.Description into groupedStores
select new
{
Store_Description = groupedStores.Key,
Connection_Duration = groupedStores.Min(connections =>
(SqlMethods.DateDiffSecond(connections.Start, connections.End)))
};
私はそれはしかし複数のクエリおよび/またはステートメントを有効な値を得ることが可能だということを知っているが、私は次の場合に思っていました私のプログラムはlinqクエリが返されることを期待しており、私の好みはプログラムを可能な限り軽く保つことになるので、1つのクエリですべてを行うことが可能です。
これを行うには偉大で簡単な方法が必要な場合は、それを共有してください。あなたの貢献は非常に高く評価されています! :)
私はもっと難しいと思っていたが、それはとてもシンプルに変わった。私はそれについても考えなかった。 (私はラムダ式でそれほど多くの経験はまだありません)しかし、とにかく、ありがとう@フレデリック!非常に高く評価! – doc92
これは最も簡単な解決策でした。あなたはまた、ステートメント内のどこにステートメントを置くことができます、ステートメントをより複雑にする、私がしたやり方は "検索のみ有効"と言っている – Frederiek