我試圖找出哪些List<int>
出許多具有一定規模的元素簡化IF子句和LINQ select語句
的發現變量的名稱,例如輸入:
List<int> list_1 = Enumerable.Range(1, 299).ToList();
List<int> list_2 = Enumerable.Range(1, 300).ToList();
List<int> list_3 = Enumerable.Range(1, 300).ToList();
List<int> list_4 = Enumerable.Range(1, 297).ToList();
我需要什麼是記錄名稱的名單和金額的項目if
它已經少於我們說的300個值。現在,我可以爲每個列表做當然是一個if
條款:
if (list_1.Count != 300)
{
//log name and number of items
}
if(list_2 ... and so on)
問:是否有查不到這個信息的更優雅的方式?
我試過一個LINQ解決方案,並將所有列表放入一個進行過濾。但在這我的問題是,我不能得到名稱:
List<List<int>> allLists = new List<List<int>>();
allLists.Add(list_1);
allLists.Add(list_2);
allLists.Add(list_3);
allLists.Add(list_4);
string logRes = String.Join(" ", allLists.Where(x=>x.Count < 300)
.Select(x=> String.Format("Name: {0} Amount: {1}", nameof(x), x.Count)));
它返回:
名稱:X金額:299名稱:X金額:297
問題2:我怎樣才能得到集合中邪惡列表的名字?
不會讓使用'詞典更有意義<字符串列表>',而不是列表清單?密鑰可能包含列表的名稱。 –
如果你使用的是C#6.0,你也可以使用NameOf表達式:http://gigi.nullneuron.net/gigilabs/c-6-preview-nameof-expressions/然而我同意字典會更優雅在這裏解決。 –
@MasterYoda:他使用namof,但是這對LINQ查詢沒有幫助 –