如何重写我的for循环以使用更短的代码

时间:2016-09-28 07:22:07

标签: c# linq

我有一些代码,希望可以重写以使用更短的代码。 代码工作正常,但我觉得代码是循环的。 这里有一些基本的代码 字典dict = settings.files; occurences是具有某些属性的对象,但其中一个名为FileName

string fileNameShort;
List<Common.Occurences> filteredList = new List<Occurences>();


//Lookup the right dictionary item for given filename in occurences
for (int j = 0; j < settings.files.Count; j++)
{
    if (occurences.FileName.StartsWith(dict.Keys.ElementAt(j)))
    {
        fileNameShort = dict.Keys.ElementAt(j);

        if (dict[fileNameShort])
        {
            filteredList.Add(occurences);
            break;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

filteredList = (from entry in dict where entry.Value && occurence.FileName.StartsWith(entry.Key) select occurence).ToList();

在某处插入换行符可能会有所帮助。

编辑但令我震惊的是,该列表只包含同一对象occurences的重复,因为这不依赖于代码中的索引j

答案 1 :(得分:0)

这是一个开始

foreach(var j in settings.files.Where(x => occurences.Filename.StartsWith(x.Key))
{
    filteredList.Add(j);
}

但它远远不能满足您的需求,因为您的代码毫无意义 - 至少对我而言。