名为"Player"的表被读取为具有"BattingAverage"列的对象.我想允许用户通过用户输入的最小平均和最大平均值范围搜索特定玩家.我写的是Lamda(我也尝试在'player.BattingAverage'之后添加AsEnumerable())
dbcontext.Players.Where(player => player.BattingAverage >= Convert.ToDecimal(txtMin.Text) ||
player.BattingAverage <= Convert.ToDecimal(txtMax.Text))
.OrderBy(player => player.PlayerID).Load();
Run Code Online (Sandbox Code Playgroud)
和普通的查询
decimal test;
test = Convert.ToDecimal(txtMin.Text) + 4.5m;
txtMax.Text = test.ToString();
var query = from player in dbcontext.Players
where player.BattingAverage >= Convert.ToDecimal(txtMin.Text) ||
player.BattingAverage <= Convert.ToDecimal(txtMax.Text)
select player;
playerBindingSource.DataSource = query.ToList();
playerBindingSource.MoveFirst();
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个错误,它说:
LINQ to Entities无法识别方法'System.DecimalToDecimal(System.Object)'方法,并且此方法无法转换为存储表达式.
原始表的BattingAverage列值为十进制(3,3)
我也试过了
decimal test;
test = Convert.ToDecimal(txtMin.Text) + 4.5m;
txtMax.Text = test.ToString();
Run Code Online (Sandbox Code Playgroud)
它工作,所以我认为问题出在LINQ.