linq クエリから sql クエリへの変換で問題が発生しています。問題の原因は、IBPUNOフィールドを使用しているときに、edmxファイルの文字列型とSQLサーバーのnchar型です)
var query = (from c in ContextM3.MPLINE where c.IBSUNO == supplier.M3Code.Trim() && orderNumbers.Contains(c.IBPUNO)
linq クエリから sql servr への "where" 句の変換は次のようになります。
...WHERE ([Extent1].[IBSUNO] = (LTRIM(RTRIM(@p__linq__0)))) AND ([Extent1].[IBPUNO] IN (N''177828'',N''7115912'))',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'8100033 '
ssms でこの SQL クエリを実行すると、行がありませんが、SQL クエリを次のように変更すると
WHERE ([Extent1].[IBSUNO] = (LTRIM(RTRIM(@p__linq__0)))) AND ([Extent1].[IBPUNO] IN (177828,7115912))',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'8100033 '
その後、正常に動作し、必要な行を取得します(私が行った変更は、値 N''177828'' を 177828 のみに変換することです。そのため、Net にこの変更を行うにはどうすればよいでしょうか??
[Extent1].[IBPUNO] IN (N''177828'',N''7115912'))
TO [Extent1].[IBPUNO] IN (177828,7115912))