C# linq验证问题
我有一个数据库,它的字段值从1到10。在该数据库中输入值时,条目的顺序必须为1到8,您可以随时添加9或10。我使用Linq语句获取数据库中小于9的最后一个值,并根据输入的值进行测试。但是,当10是数据库中的最后一个值时,它似乎不起作用C# linq验证问题,c#,database,linq,C#,Database,Linq,我有一个数据库,它的字段值从1到10。在该数据库中输入值时,条目的顺序必须为1到8,您可以随时添加9或10。我使用Linq语句获取数据库中小于9的最后一个值,并根据输入的值进行测试。但是,当10是数据库中的最后一个值时,它似乎不起作用 List<Row> list = new List<Row>(); list.AddRange(_db.Rows.ToList()); // list = { "1", "2", "8","7","8","9","10" } Row r
List<Row> list = new List<Row>();
list.AddRange(_db.Rows.ToList());
// list = { "1", "2", "8","7","8","9","10" }
Row row = (
from p in list
where p.ProcessStage.CompareTo("9") < 0
select p)
.Last();
List List=新列表();
list.AddRange(_db.Rows.ToList());
//列表={“1”、“2”、“8”、“7”、“8”、“9”、“10”}
行=(
从列表中的p开始
其中p.ProcessStage.CompareTo(“9”)<0
选择p)
.Last();
我希望返回最后的8值。目前这个声明返回了10个,我不知道为什么。任何帮助都将不胜感激。谢谢:)
解决方案
我应该在检查之前转换成int
Row row = (
from p in list
where Convert.ToInt32(p.ProcessStage) < 9
select p)
.Last();
行=(
从列表中的p开始
其中Convert.ToInt32(p.ProcessStage)<9
选择p)
.Last();
这可能与此有关。数字10大于数字9,但字符串小于字符串“9”
我猜,表列的类型是错误的。什么是
entires
什么是list
?我编辑了关于entries=list的帖子,或者,如果您无法更改数据库中的类型,只需将其解析为int