Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将以下代码(foreach和if)转换为c中的linq?_C#_.net_Linq - Fatal编程技术网

C# 如何将以下代码(foreach和if)转换为c中的linq?

C# 如何将以下代码(foreach和if)转换为c中的linq?,c#,.net,linq,C#,.net,Linq,如何将以下各项转换为Linq,如果可能,还包括将if语句转换为Linq public class InvalidDataType { public string ViewName { get; set; } public string ControlName { get; set; } public string DataValue { get; set; } } foreach (InvalidDataType invalidF

如何将以下各项转换为Linq,如果可能,还包括将if语句转换为Linq

public class InvalidDataType
    {
        public string ViewName { get; set; }
        public string ControlName { get; set; }
        public string DataValue { get; set; }
    }

foreach (InvalidDataType invalidField in DataObjectManager.GetInvalidFields())
           {
                if (invalidField.ControlName == "tbMCBNumber")
                {
                    fieldToRemove = invalidField;
                    break;
                }
            }
            if (fieldToRemove != null)
            {
                DataObjectManager.GetInvalidFields().Remove(fieldToRemove);
            }
这是我试过的代码

DataObjectManager.GetInvalidFields().Where(x => x.ControlName == "tbMCBNumber").Remove();
如果只返回一个新集合,则不会修改现有集合。这就是LINQ中的Q所代表的:查询。这意味着linq不是专门设计的,因此在修改集合时不是很好。这就是为什么在修改集合中的元素时不应该使用LINQ

如果GetInvalidFields方法返回列表,则可以执行以下操作:

DataObjectManager.GetInvalidFields().RemoveAll(x => x.ControlName == "tbMCBNumber");
然而,这不是LINQ,它只是一种ICollection方法,由List实现

或者,您可以使用一个向后输入的for循环,以便从中删除某些项:

var list = DataObjectManager.GetInvalidFields();
for(int i = list.Count - 1; i >= 0; i--)
{
    if(list[i].ControlName == "tbMCBNumber").Remove(list[i]);
}

但是,这假设您甚至可以修改GetInvalidFields返回的基础集合。如果该方法返回一些根本无法修改的内容,比如ReadOnlyCollection或只是一个迭代器,则无法从中删除项。

恐怕这不是一个代码编写服务。你需要展示一些努力,并向我们展示你的尝试。为什么不自己动手呢?我们为什么要做你的工作?这是一种尝试和思考。当你有一个特定的问题时,你可能会在这里问。还有,是什么让你认为Linq是一个好的解决方案?