0

「StartTime」と「EndTime」という名前のデータベースに2つのフィールドがあります

としてレコードを保存しました

開始時間 終了時間
05:00:00.0000000 06:00:00.0000000

05:00:00.0000000 と 06:00:00.0000000 の間に別のレコードが挿入された場合にエラー メッセージを表示したい

これは、開始時間と終了時間に関係なく、05 から 06 の間に発生してはならないことを意味します。

04 から 06 - エラーを表示
04:30 ~ 06 - エラーを表示
05:00 ~ 07 - エラーを表示

linqを使用してこれを達成するにはどうすればよいですか?

これは私の現在の試みであり、適切な結果を生成しません:

string _timepicker_start = collection["timepicker_start"];
string _timepicker_end = collection["timepicker_end"];
TimeSpan _end = new TimeSpan(Convert.ToInt16(_timepicker_end.Split(':')[0])
    ,  Convert.ToInt16(_timepicker_end.Split(':')[1]), 00);
TimeSpan _start = new TimeSpan(Convert.ToInt16(_timepicker_start.Split(':')[0])
    , Convert.ToInt16(_timepicker_start.Split(':')[1]), 00);

var _schedule = _db.Classes
                 .Where(c => c.StartTime <= _start && c.EndTime >= _end)
                .FirstOrDefault(); 

if (_schedule != null)
{
    // Show message already have record.. 
}

うまく動かないので教えてください。

4

2 に答える 2

3

あなたがしたいc => c.EndTime > _start && c.StartTime < _endですWhere

(アイテムがどちらかの端で「接触」できないようにする場合は、等値を追加します。)

StartTimeこれは、すべてに対して<=を検証していることを前提としていますEndTime

于 2012-10-31T16:06:34.757 に答える
0

スタック オーバー フローのおかげで:

私は私の解決策を次のように持っています:

            var _schedule = _db.Classes
             .Where(c => (c.StartTime >= _start || c.StartTime <_end)&& c.EndTime > _end)
            .FirstOrDefault(); 

迅速な対応とヘルプをありがとう!!!

于 2012-10-31T16:53:55.693 に答える