C# 如果两个属性的组合等于一个字符串,如何删除所有值?

C# 如果两个属性的组合等于一个字符串,如何删除所有值?,c#,linq,C#,Linq,我试图使用LINQ删除列表的所有引用,其中两个属性的组合等于一个字符串 例如:我有这个对象 class obj { string a; string b; } 我有一个单独的字符串x 所以我想删除where(a+b)==x 下面是我想做的示例: void Main() { List<telefone> phones = new List<telefone>() { new telefone() {

我试图使用LINQ删除列表的所有引用,其中两个属性的组合等于一个字符串

例如:我有这个对象

class obj
{
  string a;
  string b;
}
我有一个单独的字符串x

所以我想删除where
(a+b)==x

下面是我想做的示例:

void Main()
{
List<telefone> phones = new List<telefone>() 
    {
        new telefone()
        {
           ddd = "21", numero="1234"
        }, 
        new telefone()
        {
           ddd = "22", 
           numero="1234"
        }
    };


List<string> newPhones = new List<string>(){"1151814088", "11996081170", "098",   "890", "99988", "6533"};

for(int i = 0; i < newPhones.Count; i++)
    {
    phones.Select(x => x.ddd + x.numero).ToList().RemoveAll(x => (x == phones[i]));
}
phones.Dump();
}

public class telefone
{
        //[System.Xml.Serialization.XmlIgnore]
        internal string hash = String.Empty;

        public String ddd { get; set; }

        public String numero { get; set; }

        public telefone()
        {
            ddd = String.Empty;
            numero = String.Empty;
        }
}
void Main()
{
列表电话=新列表()
{
新电传
{
ddd=“21”,numero=“1234”
}, 
新电传
{
ddd=“22”,
numero=“1234”
}
};
List newPhones=newlist(){“1151814088”、“11996081170”、“098”、“890”、“99988”、“6533”};
for(int i=0;ix.ddd+x.numero).ToList().RemoveAll(x=>(x==phones[i]);
}
电话。转储();
}
公用电话
{
//[System.Xml.Serialization.XmlIgnore]
内部字符串哈希=string.Empty;
公共字符串ddd{get;set;}
公共字符串numero{get;set;}
公用电话()
{
ddd=String.Empty;
numero=String.Empty;
}
}

var filteredList=initialList.Where(obj=>(obj.a+obj.b)!=x)


您可能需要检查空字符串。

您可以使用
Where
+
Any

var removed = phones.Where(p => !newPhones.Any(np => np == p.ddd + p.numero))
                    .ToList();
或者更好,因为它不会创建新列表:

phones.RemoveAll(p => newPhones.Any(np => np == p.ddd + p.numero));

你的答案几乎是对的,只是你把“!”放在手机上,所以它只是删除了everyone=D,但在我删除手机上的“!”之后,它就起作用了。RemoveAll(p=>!newPhones.Any(np=>np==p.ddd+p.numero));谢谢@user1955193:从Linq查询复制/粘贴错误;)另外,它不需要一个循环来完成它=D