C# 使用LINQ操作集合中的数据

C# 使用LINQ操作集合中的数据,c#,string,linq,C#,String,Linq,我使用以下方法: var menuItems = _menuRepository.GetPk(pk) .Where(m => m.Status == "00") .OrderBy(m => m.Order) .Select(m => new MenuItem { PartitionKey = m.PartitionKey,

我使用以下方法:

        var menuItems = _menuRepository.GetPk(pk)
            .Where(m => m.Status == "00")
            .OrderBy(m => m.Order)
            .Select(m => new MenuItem
            {
                PartitionKey = m.PartitionKey,
                RowKey = m.RowKey,
                Order = m.Order,
                Link = m.Link
            });
检索以下字符串的集合。所有字符串长度相同(8列),并按顺序排序:

0-0-0-00
0-1-0-00
0-2-0-00
0-3-0-00
1-0-0-00
1-1-0-00
1-1-1-00
1-1-2-00
1-1-3-00
1-2-0-00
3-1-0-00
3-2-0-00
我需要做的是,如果给定一个字符串,如“1-1-1-00”,那么我需要从menuItems列表中检索所有行,其中前四列与输入字符串匹配,但第五列中有一行为零。例如:

1-1-1-00
1-1-2-00
1-1-3-00 

例如:“-你忘了在那里粘贴东西了吗?谢谢,我添加了输出。我的问题清楚吗?这有点难以解释。我甚至不确定我是否能和LINQ一起做这件事。也许for循环中的东西会更容易些?你在说什么第五栏?!!你的问题一点也不清楚!8列字符串中的第5列。最后一个例子中的序列是:1,2,3,例如:“-你忘了在那里粘贴东西了吗?谢谢,我添加了输出。我的问题清楚吗?这有点难以解释。我甚至不确定我是否能和LINQ一起做这件事。也许for循环中的东西会更容易些?你在说什么第五栏?!!你的问题一点也不清楚!8列字符串中的第5列。在上一个示例中,序列为:1,2,3的字符串不需要对每个字符串调用split三次,您可以将lambda体包装在{}中,将其赋值给变量一次,然后使用该变量。因为字符串是固定长度的,你可以简单地索引到其中,比较字符+1,你完全正确。我只是复制并粘贴了它2个时间作为第一个应答,而不是对每个字符串调用split三次。你可以将lambda体包装成{}赋值给一个变量一次,然后使用它。因为字符串是固定长度的,你可以简单地索引到其中,比较字符+1,你完全正确,我只是复制并粘贴了它2个时间作为第一个答案
string given = "1-1-1-00";
string sptGiven = given.Split('-');
var result = stringList.Where(m => m.Split('-')[0] == sptGiven[0] && 
                              m.Split('-')[2] == sptGiven[2] && 
                              m.Split('-')[3] == sptGiven[3]);
String input = "1-1-1-00";
var wantedStrings = stringList.Where(str => str.StartsWith(input.Substring(0, 4)) && str[4] != '0');