簡體   English   中英

如何從對象列表中獲取屬性,該對象是具有最低數值的字符串

[英]How to get the property from a list of object that is a string with the lowest numeric value

說我有一個人名單:

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));

不知道怎么做比較。

您需要將其轉換為int,按該值排序並取第一個(最低):

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

如果您只想要最低值:

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

但是你應該考慮首先將它存儲為int。

您的代碼將給出錯誤,因為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());

如果它存儲數字,我會將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的類型是整數。 考慮相應地重命名屬性。

您可以使用MoreLinq的MinBy方法來查找具有最小值的人,而無需對所有人進行排序,如果您有多個人,則效率低下。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM