Entity Framework 条件なしでDBから値をとってくる
2013/01/11
やりたいことは、下記のような感じのこと。
var q = "select * from ○○○";
if(××× != null){
q += " where xxx=" + ×××;
}
q += ";";
if(××× != null){
q += " where xxx=" + ×××;
}
q += ";";
Entity Frameworkってヤツで下記のような感じにした。
var q = _db._table;
if (_xxx != null) {
q = q.Where(x=> x.xxx == _xxx);
}
if (_xxx != null) {
q = q.Where(x=> x.xxx == _xxx);
}
結果は「System.Linq.IQueryable を System.Data.Entity.DbSet に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)」というエラー。
「q = _db._table」だと式が中途半端というようならエラーらしい。
条件によってWhere句をつける・つけないってするなら最初にとりあえずの条件をつけておく必要があるらしい。
var q = _db._table.Where(x => true);
if (_xxx != null) {
q = q.Where(x=> x.xxx == _xxx);
}
if (_xxx != null) {
q = q.Where(x=> x.xxx == _xxx);
}
こんな感じ。