日時列を文字列として変換するようにリンクします。これは、クエリに同じものを追加してデータベースで実行される System.Data.Objects.SqlClient.SqlFunctions を使用する場合、データベースの例で発生するはずです。
提案されたすべての投稿で、最初に照会する必要があり、次に選択する必要があります。select では .ToString() を使用できます。最初にレコードを取得するのではなく、フェッチ時に変換したいと思います。
私の要件。私はエンティティ従業員を持っています。
public class EmpEntities
{
public string Id { get; set; }
public DateTime CreatedDate { get; set; }
}
私のデータを仮定 Emp-19,2012-01-01 11:33:454 Emp-17,1999:06:06 12:44:898
私の検索基準は 20 です。すべての従業員が 20 (含む) を持っているすべてのフィールドで、これをチェックする必要があるプロパティのリストをフィルタリングする必要があります。そのためには、作成した日付列を linq の文字列として変換する必要があります。
var query=
(from ee in entities.Employee
where ee.CreatedDate.Value.ToString().Contains("20")
select ee).ToList();
上記のものを使用すると、エラーが発生します。
以下を使用すると、正常に動作します。
var query=
(from emp in entities.Employee
select emp)
.AsEnumerable()
.Where(x=>x.CreatedDate.Value.ToString().Contains("20"));
エンティティの日時プロパティの内容を確認する必要があります。datetime プロパティを文字列に変換し、linq に含まれているかどうかを確認する方法はありますか。
datetime プロパティを文字列に変換する必要があり、contains を使用する必要があります。
ここで私の問題は、たとえばこのようにデータベースレベルでデータをフィルタリングしたいことです。従業員IDの準備をしています
var query= (from emp in entities.Employee.Where(x => System.Data.Objects.SqlClient.SqlFunctions.StringConvert((decimal?)x.Empid).Contains("20"))
select emp).ToList();
SQLクエリでこれに相当するのは.
SELECT 1 AS [C1], [Extent1].[name] AS [name] FROM [dbo].[Employee] AS [Extent1]
WHERE STR( CAST( [Extent1].[EmpId] AS decimal(19,0))) LIKE N'%5%'
SQL実行では、整数型を文字列に変換し、レコードをフェッチしながら条件を実行します。
同様に、empid とともに作成日をフィルター処理したいと思います。しかし、contains を使用できるように、datetime 列を文字列に変換できません。
上記の整数データ型に対して行ったことを達成する方法はありますか。