C# 我如何构建此的手动版本?

C# 我如何构建此的手动版本?,c#,extension-methods,C#,Extension Methods,我有一个名为Package的类,它包含List和string成员,对应于依赖项列表和包的名称。它覆盖Equals(),根据包名提供相等性。我正在尝试构建这一行的手动版本: Uninstallable.RemoveAll(pkg=>Installable.Contains(pkg)) 其中可卸载和可安装是列表 我尝试使用Contains()方法: publicstaticboolmycontains(此列表包,包inPkg) { foreach(包装中的包装) { 如果(包装等于(单位千克)) {

我有一个名为
Package
的类,它包含
List
string
成员,对应于依赖项列表和包的名称。它覆盖
Equals()
,根据
包名提供相等性。我正在尝试构建这一行的手动版本:

Uninstallable.RemoveAll(pkg=>Installable.Contains(pkg))

其中
可卸载
可安装
列表

我尝试使用
Contains()
方法:

publicstaticboolmycontains(此列表包,包inPkg)
{
foreach(包装中的包装)
{
如果(包装等于(单位千克))
{
返回true;
}
}
返回false;
}

如何使用此扩展方法构建与上述行相同的功能,但不使用lambda?

您可以使用此foreach循环:

foreach ( var item in Uninstallable.ToList() )
  if ( Installable.MyContains(item ) )
    Uninstallable.Remove(item)
我们需要调用
ToList
,因为我们修改了
Uninstallable

否则,您可以使用for循环:

for ( int index = Uninstallable.Count - 1; index >= 0; index-- )
  if ( Installable.MyContains(Uninstallable[index]) )
    Uninstallable.RemoveAt(index);

因为我们通过倒计时来删除项目,所以没有问题。

您可以使用此foreach循环:

foreach ( var item in Uninstallable.ToList() )
  if ( Installable.MyContains(item ) )
    Uninstallable.Remove(item)
我们需要调用
ToList
,因为我们修改了
Uninstallable

否则,您可以使用for循环:

for ( int index = Uninstallable.Count - 1; index >= 0; index-- )
  if ( Installable.MyContains(Uninstallable[index]) )
    Uninstallable.RemoveAt(index);

因为我们减少了删除项的次数,所以没有问题。

这是一个如何简化扩展的示例

publicstaticboolmycontains(此列表包,包inPkg)
{
退货包装。任何(x=>x.Equals(inPkg));
}

这是一个如何简化扩展的示例

publicstaticboolmycontains(此列表包,包inPkg)
{
退货包装。任何(x=>x.Equals(inPkg));
}

我不明白。最后的方法是contains方法,它不“构建”任何东西。您需要滚动自己的
MyRemove
,它直接使用
MyContains
。这就是我请求帮助的内容。我不知道从哪里开始使用
MyRemove
方法。我想我说得不够清楚,对不起,我不明白。最后的方法是contains方法,它不“构建”任何东西。您需要滚动自己的
MyRemove
,它直接使用
MyContains
。这就是我请求帮助的内容。我不知道从哪里开始使用
MyRemove
方法。我想我说得不够清楚,对不起,冻糕!谢谢,冻糕!谢谢。