C# linq验证问题

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

我有一个数据库,它的字段值从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 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