1

假设我有一份人员名单:

Var people = new List<Person>();

在哪里

Public class Person {
Public string ReferenceString { get; set; }
}

参考字符串是一串数字,所以我的列表中可能有;

Var person1 = new Person { ReferenceString = "12" };
Var person2  = new Person { ReferenceString = "11" };
Var person3 = new Person { ReferenceString = "14" };

我想要做的是以某种方式取回具有最低数值的参考字符串,在这种情况下是“11”。所以我猜它需要在线上的某个地方转换为 int 并且正在按照以下方式工作:

people.Where(x => Int32.Parse(x.ReferenceString));

虽然不知道如何进行比较。

4

4 回答 4

3

您需要将其转换为 int,按该值排序并取第一个(最低):

Person lowPerson = people.OrderBy(p => int.Parse(p.ReferenceString)).First();

如果您只想要最低值:

int lowest = people.Min(p => int.Parse(p.ReferenceString));

但是您应该首先考虑将其存储为 int 。

于 2012-08-20T08:13:40.173 回答
0

您可以使用MoreLinq 的 MinBy 方法找到具有最小值的人,而不必对所有人员进行排序,如果您的人员数量过多,这将是低效的。

Person lowPerson = people.MinBy(p => int.Parse(p.ReferenceString));
于 2012-08-20T08:19:11.940 回答
0

您的代码将给出错误,因为ReferenceString它是字符串并且您正在为其分配整数值。

既然你说你不能改变数据类型,你可以做

Var person1 = new Person { ReferenceString = "12" };
Var person2  = new Person { ReferenceString = '11" };
Var person3 = new Person { ReferenceString = "14" };

在这种情况下使用

var min = people.Min(x => Convert.ToInt32(x.ReferenceString));

如果您想找出哪些人员有最小 ReferenceString,您可以这样做。

var result = people.Where(x => x.ReferenceString == min.ToString());
于 2012-08-20T08:06:36.363 回答
0

我会让它ReferenceString好像ReferenceInteger在存储数字。然后,您可以使用 Min 方法并获取记录。像这样:

var person1 = new Person { ReferenceString = 12 };
            var person2 = new Person { ReferenceString = 11 };
            var person3 = new Person { ReferenceString = 14 };

            var people = new List<Person>();
            people.Add(person1);
            people.Add(person3);
            people.Add(person2);

            var returnValues = people.Where(x => x.ReferenceString == people.Min(y => y.ReferenceString));

这里 ReferenceString 是整数类型。考虑相应地重命名该属性。

于 2012-08-20T08:11:11.543 回答