Shridhar Salunkhe Ответов: 1

Я хочу проверить дублирующихся элементов в XML и дать предупреждение на этикетке для повторяющихся элементов


XML:-
<?xml version="1.0" encoding="utf-8"?>
<List>
  <Email_Entry></Email_Entry>
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="qw@gmail.com" />
  <Email_Entry EmailID="shssh@gmail.com" />
</List>


Что я уже пробовал:

aspx.cs:-
<pre>protected void btnEmailSubscribe_Click(object sender, EventArgs e)
        {
            string EmailID = txtEmailSubscribe.Text;
            string FILE_PATH = Server.MapPath("~/Logs/SubscribedEmails.xml");
            XDocument Emailxml = XDocument.Load(FILE_PATH);
            var EmailExist = Emailxml.Descendants("Email_Entry")
                .Any(x => (string)x.Element("EmailID") == txtEmailSubscribe.Text);
            if (EmailExist)
            {
                lblEmail.Text = "EmailID already exist";
            }
            else
            {
                Emailxml.Root.Add(new XElement("Email_Entry",
                           new XAttribute("EmailID", EmailID)
                       ));
                Emailxml.Save(FILE_PATH);
                lblEmail.Text = "Subscribed Successfully";
            }            
        }


кто-нибудь может сказать, что не так?

1 Ответов

Рейтинг:
1

Graeme_Grant

Это вернет только дублированные адреса электронной почты.

var duplicateEmails 
    = Emailxml.Descendants("Email_Entry")     // email node
                .GroupBy(x => x.Name)         // group by element
                .Where(x => x.Count() > 1)    // select groups where more than 1 found
                .Select(x => x.Key.LocalName) // element contents
                .ToList();