我有一个包含X
的字符串列表。我想在其中选择最小计数X
的列表。例如:
CountMin("AXBXX", "AAX")
将返回AAX
。
如何以简洁的方式编写这个qq LINQ?
答案 0 :(得分:3)
public static string CountMin(IList<string> inputList)
{
if (inputList == null || !inputList.Any()) return null;
var result = inputList.Select(s => new
{
Item = s,
Count => s.Count(ch => ch == 'X')
})
.OrderBy(item => item.Count).First().Item;
}
Snippet假设列表中的所有元素都与null
不同。如果您需要它,它可以很容易地改进。
您也可以省略临时课程:
inputList.OrderBy(s => s.Count(c => c == 'X')).First();
答案 1 :(得分:0)
string[] list = {"AXBXX", "AAX", "AXX"};
string result = (from word in list
select new { word, wordLen = (word.Length - (word.Replace("X", "")).Length) })
.OrderBy(x => x.wordLen).First().word;
MessageBox.Show(result);
答案 2 :(得分:0)
这是一个答案,可以从列表中获取所有最小X
个字符串。
var listOfStrings = new List<string>()
{
"AXB",
"ABXXC",
"ABX",
};
var minimumXs =
listOfStrings
.GroupBy(x => x.Count(y => y == 'X'))
.OrderBy(x => x.Key)
.Take(1)
.SelectMany(x => x);
这让我:
AXB
ABX