startTime と errorTime の 2 つの時間枠に基づいて「where」条件をチェックする動的 linq クエリを作成したいと考えています。現在のコードはこちら、
IQueryable<LogFormat> errorLines = null;
if (!string.IsNullOrEmpty(errorStartTime) && !string.IsNullOrEmpty(errorTime))
{
var sTime = DateTime.Parse(errorStartTime);
var eTime = DateTime.Parse(errorTime);
errorLines = from errorLine in File
where
(errorLine.DateTime >= sTime && errorLine.DateTime <= eTime) &&
(
errorLine.Level == "ERR"
|| errorLine.Level == "WARN"
)
select errorLine;
}
else if (!string.IsNullOrEmpty(errorStartTime))
{
var sTime = DateTime.Parse(errorStartTime);
errorLines = from errorLine in File
where
errorLine.DateTime >= sTime
&&
(
errorLine.Level == "ERR"
|| errorLine.Level == "WARN"
)
select errorLine;
}
else if (!string.IsNullOrEmpty(errorTime))
{
var eTime = DateTime.Parse(errorTime);
errorLines = from errorLine in File
where
errorLine.DateTime <= eTime
&&
(
errorLine.Level == "ERR"
|| errorLine.Level == "WARN"
)
select errorLine;
}
else
{
errorLines = from errorLine in File
where
errorLine.Level == "ERR"
|| errorLine.Level == "WARN"
select errorLine;
}
開始時刻とエラー時刻を動的に送信して結果を取得できるように、クエリを 1 つだけ持つ方法を教えてください。