Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVVM get data from text file

Tags:

c#

file

mvvm

I can not get the logic how to search in a text file and then get the data I need using model view view model. Basically, I have to make a dictionary app and I have word,language and description in the text file. Like:

cat;e English; it is a four leg animal

In the model I have a text box where the client writes a word and two other boxes, where language and description of the word should be shown.

I just can not get how to search in this file. I tried to search online but nothing seemed to meet my exact question.

like image 321
Tatiana Gancheva Avatar asked Dec 05 '25 20:12

Tatiana Gancheva


1 Answers

Unless your file is going to change you can get away with reading the entire file up front when running your application and putting the data into lists of models for your view models.

As this is essentially a CSV file, and assuming each entry is a line, using a Semi-colon as the delimiter we can use the .Net CSV parser to process your file into your models:

Basic Model:

public class DictionaryEntryModel {
    public string Word { get; set; }
    public string Language { get; set; }
    public string Description { get; set; }
}

Example view model with a constructor to fill out your models:

public class DictionaryViewModel {

    // This will be a INotify based property in your VM
    public List<DictionaryEntryModel> DictionaryEntries { get; set; }

    public DictionaryViewModel () {
        DictionaryEntries = new List<DictionaryEntryModel>();

        // Create a parser with the [;] delimiter
        var textFieldParser = new TextFieldParser(new StringReader(File.ReadAllText(filePath)))
        {
            Delimiters = new string[] { ";" }
        };

        while (!textFieldParser.EndOfData)
        {
            var entry = textFieldParser.ReadFields();
            DictionaryEntries.Add(new DictionaryEntryModel()
                {
                    Word = entry[0],
                    Language = entry[1],
                    Description = entry[2]
                });
        }

        // Don't forget to close!
        textFieldParser.Close();
    }
}

You can now bind your view using the property DictionaryEntries and as long as your app is open it will preserve your full file as the list of DictionaryEntryModel.

Hope this helps!

like image 121
Tom 'Blue' Piddock Avatar answered Dec 08 '25 08:12

Tom 'Blue' Piddock



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!