次の形式のテーブルがあります。
PID ID Label Value
------------------------------------------
1 1 First Name Jenna
1 2 DOB 10/12/1980
Jで始まる名とDOBの月が10であるすべてのPIDを取得する必要があります。
私のコードでは、C#のDataTableでこれらを取得してから、LINQを使用して必要な結果を取得しようとしました。これは単なる例です。これらのラベルは、ユーザーが定義するものであれば何でもかまいません。
LINQを使用すると、名がJで始まるすべてのPIDを取得できますが、DOBの値をキャストしようとするたびに、キャストが無効なエラーが発生します。Valueには任意のタイプの情報が含まれている可能性があるため、データベースの列タイプを変更できません。
これが私のコードの一部です。私はLINQを初めて使用しますが、それでもその周りを理解しようとしています。
var resultQuery = from r in query.AsEnumerable()
where (r.Field<string>("Label") == Label &&
r.Field<DateTime>("Value").Month == 10)
select r.Field<int>("PID");