Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 937
  • Last Modified:

Convert Dictionary foreach search to Linq

Hi

is it possible to convert this code to use Linq instead?
private bool Exists(string name)
        {
            foreach (ClientData p in _clients.Keys)
            {
                if (p.Id.Equals(name, StringComparison.OrdinalIgnoreCase))
                {
                    return true;
                }
            }
 
            return false;
        }

Open in new window

0
AWestEng
Asked:
AWestEng
  • 4
  • 3
  • 3
2 Solutions
 
abelCommented:
Yes, it is (btw, there's a LINQ zone too, you may have more luck there...) Here's a one-liner, but you may want to split it a bit:

private bool Exists(string name)
{
    return (from p in _clients.Keys 
        where p.Id.Equals(name, StringComparison.OrdinalIgnoreCase) 
        select p).FirstOrDefault() != null;
}

Open in new window

0
 
Fernando SotoCommented:
Hi AWestEng;

Here is code snippet showing how it can be done using Linq methods.

Fernando
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication13
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        List<ClientData> _clients = new List<ClientData>();
 
        private void Form1_Load(object sender, EventArgs e)
        {
            ClientData cd = new ClientData() { Id = "John" };
            _clients.Add(cd);
            cd = new ClientData() { Id = "William" };
            _clients.Add(cd);
            cd = new ClientData() { Id = "AWestEng" };
            _clients.Add(cd);
            cd = new ClientData() { Id = "Alice" };
            _clients.Add(cd);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            // User types name in text box and copies to name
            string name = textBox1.Text.Trim();
 
            if (!Exists(name))
            {
                MessageBox.Show("Name was NOT found");
            }
            else
            {
                MessageBox.Show("Name was found");
            }
        }
 
        private bool Exists(string name)
        {
            return _clients.Where(c => c.Id.Equals(name, StringComparison.OrdinalIgnoreCase))
                           .Select(c => c.Id == String.Empty ? false : true).FirstOrDefault();
        }
    }
 
    public class ClientData
    {
        public string Id { get; set; }
    }
}

Open in new window

0
 
AWestEngAuthor Commented:
sorry FernandoSoto:, I accepted able's reply you where posting yours, I'm sorry m8..
0
Granular recovery for Microsoft Exchange

With Veeam Explorer for Microsoft Exchange you can choose the Exchange Servers and restore points you’re interested in, and Veeam Explorer will present the contents of those mailbox stores for browsing, searching and exporting.

 
Fernando SotoCommented:
Not a problem, that happens. Have a great day.  ;=)
0
 
abelCommented:
If you want, you can request reopen and split. I won't object to that. FernandoSoto put in quite some effort, though I believe his solution is about the same as what I showed (though slightly more verbose perhaps).
0
 
Fernando SotoCommented:
No need to do that, it is really not a problem.  ;=)
0
 
AWestEngAuthor Commented:
Thx guys,, perfect job
0
 
Fernando SotoCommented:
Thanks AWestEng and abel.  ;=)
0
 
AWestEngAuthor Commented:
No!  Thank you guys! Thx for always put your own time into others problem and help out.
I really appreciate it . :)
0
 
abelCommented:
you're welcome, both, always around to help (almost)  :)
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 4
  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now