CRMエンティティをクエリするのにLINQを使用しています。以下は私のコードlinq to crmの日付範囲フィルタ
var data = svcContext.CreateQuery("myentity");
if (info.FromDate != null && info.ToDate != null)
{
data = data.Where(r => r.GetAttributeValue<DateTime>("rundate") >= info.FromDate.Value.Date && r.GetAttributeValue<DateTime>("rundate") <= info.ToDate.Value.Date);
}
これはfromDateからtoDateまでのすべてのレコードを返しますが、間違ったレコードを返した比較しながら、それはまた、時間の一部を考えるです。私は時間部分を切り捨て、比較のために日付部分のみを使用したい。私はすでにこの
1.
if (info.FromDate != null && info.ToDate != null)
{
data = data.Where(r => r.GetAttributeValue<DateTime>("rundate").Date >= info.FromDate.Value.Date && r.GetAttributeValue<DateTime>("rundate").Date <= info.ToDate.Value.Date);
}
2.
if (info.FromDate != null && info.ToDate != null)
{
data = data.Where(r => Convert.ToDateTime(r.Attributes["rundate"]).Date >= info.FromDate.Value.Date && Convert.ToDateTime(r.Attributes["rundate"]).Date <= info.ToDate.Value.Date);
}
3.
if (info.FromDate != null && info.ToDate != null)
{
data = data.Where(r => EntityFunctions.TruncateTime(r.GetAttributeValue<DateTime>("rundate")) >= info.FromDate.Value.Date && EntityFunctions.TruncateTime(r.GetAttributeValue<DateTime>("rundate")).Date <= info.ToDate.Value.Date);
}
これらすべてretuのようなコードを使用しましたrns "無効な 'where'の条件。 "エラー。日付部分と切り捨て部分だけで比較する方法ありがとうございました。
であなたの記録を照会していないが単純に(レコードをフィルタ処理が、時間とみなさ返される)最初のクエリの後ToListメソッドを実行します。次に、結果に時間を費やさずにクエリを実行してください(それはオブジェクトへのLinqになりますので、すべてサポートされています) –