说我有一个人名单:
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));
不知道如何进行比较。
答案 0 :(得分:3)
您需要将其转换为int,按该值排序并取第一个(最低):
Person lowPerson = people.OrderBy(p => int.Parse(p.ReferenceString)).First();
如果您只想要最低值:
int lowest = people.Min(p => int.Parse(p.ReferenceString));
但你应该考虑首先将它存储为int。
答案 1 :(得分: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));
如果你想找出哪些pesons有最小的ReferenceString,你可以这样做。
var result = people.Where(x => x.ReferenceString == min.ToString());
答案 2 :(得分: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的类型是整数。考虑相应地重命名该属性。
答案 3 :(得分:0)
您可以使用MoreLinq's MinBy method查找价值最低的人,而无需对所有人进行排序,如果您的人数不多,这将效率低下。
Person lowPerson = people.MinBy(p => int.Parse(p.ReferenceString));