0
var query = from t1 in Table1
            join t2 in Table2
                on new { t1.Id }
                equals new { t2.Id}
            select new
            {
                t1.Id,
                t1.FirstName,
                t1.MiddleName,//allows null values in the database
                t1.LastName,
                t1.phone //allows null values in the database

            };
if(query.Count()>0)//fails here"The value for column MiddleName in table'Table1' is DBNULL"
{
}

LINQ クエリで middleName と Phone の null 値を含むすべての行を取得する方法はありますか?

4

4 に答える 4

0

問題は、新しい匿名オブジェクトのプロパティがオンザフライで定義され、型が値から推測されることです。

そんな一行に

MiddleName = t1.MiddleName,//allows null values in the database 

タイプが t1.MiddleName のタイプである、MiddleName という新しいプロパティが作成されます。しかし、t1.MiddleName が null の場合、型は何ですか ??? Null には型がありません。

あいまいさを避けるために、簡単に言えば

MiddleName = (string)t1.MiddleName,

提供されていなくても、とにかくそれが文字列であることをコンパイラーに知らせます。

于 2011-05-18T12:47:54.470 に答える
0

メタデータが DB スキーマと同期していないようです。スキーマ MiddleName に対してクラスが生成されたときは nullable ではなかったようですが、現在は nullable になっています。その場合、Entity Framework を使用している場合は EDMX を更新するか、LINQ to SQL を使用している場合はクラスを更新する必要があります。

于 2011-05-16T15:14:39.987 に答える
0

これを試してもらえますか

var query = from t1 in Table1
            join t2 in Table2
                on new { t1.Id }
                equals new { t2.Id}
            select new
            {
                Id = t1.Id,
                FirstName = t1.FirstName,
                MiddleName = t1.MiddleName,//allows null values in the database
                LastName = t1.LastName,
                Phone = t1.phone //allows null values in the database

            };
if(query.Count()>0)//fails here"The value for column MiddleName in table'Table1' is DBNULL"
{
}
于 2011-05-16T16:00:53.527 に答える