C# Linq question -


i have text file in storing entries address book. layout so:

name:
contact:
product:
quantity:

i have written linq code grab name plus next 4 lines, search name feature. want able search contact. challenge match contact info, grab next 3 lines, , grab line prior match. way if search contact used, full list of info returned.

  private void buttonsearch_click(object sender, eventargs e)     {             string[] lines = file.readalllines("c:/addressbook/customers.txt");             string name = textboxsearchname.text;             string contact = textboxcontact.text;              if (name == "" && contact == "")             {                 return;             }              var byname = line in lines                          line.contains(name)                          select lines.skipwhile(f => f != line).take(4);              //var bycontact = line in lines             //                line.contains(name)             //                select lines.skipwhile(f => f != name).take(4);               if (name != "")             {                 foreach (var item in byname)                     foreach (var line in item) { listbox2.items.add(line); }                  listbox2.items.add("");             }              //if (contact != "")             //{             //    foreach (var item in bycontact)             //        foreach (var line in item) { listbox2.items.add(line); }                  //listbox2.items.add("");             }     } 

firstly recommend changing data storage approach if can.

secondly recommend reading file object, this:

public class contact {      public string name {get; set;}     public string contact {get; set;}     public string product {get; set;}     public int quantity {get; set;} } ... public ienumerable<contact> getcontacts() {     //make read line line if big!     string[] lines = file.readalllines("c:/addressbook/customers.txt");     (int i=0;i<lines.length;i += 4)     {         //add error handling/validation!         yield return new contact()         {               name = lines[i],               contact = lines[i+1],               product = lines[i+2],               quantity = int.parse(lines[i+3]          };     } } private void buttonsearch_click(object sender, eventargs e) {     ...     var results = c in getcontacts()                  c.name == name ||                        c.contact == contact                  select c;     ... } 

Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -