Pregunta

Tengo una buena cantidad de preguntas y mi primera es ¿cómo puedo hacer una consulta LINQ sencilla para que coincida con una palabra en un archivo? No estoy tratando de ser estúpido, pero no he entendido la documentación que he encontrado para LINQ correctamente.

¿Fue útil?

Solución

crear una nueva aplicación WindowsForms y pega el siguiente código.

'' ll necesita agregar un control de etiqueta etiqueta, cuadro de texto y un botón

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;

namespace LinqTests
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public String[]
            Content;
        public String
        Value;

        private void button1_Click(object sender, EventArgs e)
        {
            Value = textBox1.Text;

            OpenFileDialog ofile = new OpenFileDialog();
            ofile.Title = "Open File";
            ofile.Filter = "All Files (*.*)|*.*";

            if (ofile.ShowDialog() == DialogResult.OK)
            {
                Content =
                       File.ReadAllLines(ofile.FileName);

                IEnumerable<String> Query =
                    from instance in Content
                    where instance.Trim() == Value.Trim()
                    orderby instance
                    select instance;

                foreach (String Item in Query)
                    label1.Text +=
                        Item + Environment.NewLine;
            }
            else Application.DoEvents();

            ofile.Dispose();
        }
    }
}

Espero que esto ayude

Otros consejos

¿Qué pasa algo como lo siguiente?

string yourFileContents = File.ReadAllText("c:/file.txt");
string foundWordOrNull =  Regex.Split(yourFileContents, @"\w").FirstOrDefault(s => s == "someword");

(¿quién ha dicho que C # no puede ser conciso?)

Te código funciona mediante la lectura de su archivo, dividiéndolo en palabras y luego devolver la primera palabra que encuentra eso se llama someword.

EDIT: A partir de un comentario de lo anterior se consideró "no LINQ". Aunque no estoy de acuerdo (ver comentarios), creo que se justifica aquí un ejemplo más de LINQified el mismo enfoque; -)

string yourFileContents = File.ReadAllText("c:/file.txt");
var foundWords =  from word in Regex.Split(yourFileContents, @"\w")
                  where word == "someword"
                  select word;

if(foundWords.Count() > 0)
    // do something with the words found

Este es un ejemplo de MSDN que cuenta las ocurrencias de una palabra en una cadena ( http://msdn.microsoft.com/en-us/library/bb546166.aspx ).

string text = ...;

string searchTerm = "data";

//Convert the string into an array of words
string[] source = text.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' },
    StringSplitOptions.RemoveEmptyEntries);

// Create and execute the query. It executes immediately 
// because a singleton value is produced.
// Use ToLowerInvariant to match "data" and "Data" 
var matchQuery = from word in source
         where word.ToLowerInvariant() == searchTerm.ToLowerInvariant()
         select word;

// Count the matches.
int wordCount = matchQuery.Count();
Console.WriteLine("{0} occurrences(s) of the search term \"{1}\" were found.",
    wordCount, searchTerm);

Y aquí es uno más LINQ tutorial sobre la lectura de datos desde un archivo de texto http://www.onedotnetway.com/tutorial-reading-a-text-file-using-linq/ .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top