使用LINQ处理集合中的数据

时间:2012-02-25 09:39:42

标签: c# string linq

我使用以下内容:

        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列表中检索所有行,其中前四列与输入字符串匹配,但一行除外在第5列中有零。如:

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

2 个答案:

答案 0 :(得分:3)

String input = "1-1-1-00";
var wantedStrings = stringList.Where(str => str.StartsWith(input.Substring(0, 4)) && str[4] != '0');

答案 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]);