Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据特定属性从列表中选择和显示某些项目_C# - Fatal编程技术网

C# 根据特定属性从列表中选择和显示某些项目

C# 根据特定属性从列表中选择和显示某些项目,c#,C#,我有一个保存在文本文件中的对象列表,可以显示在表单上。但是,现在我需要一个按钮,它只显示列表中基于属性的特定对象,在我的例子中是品牌。下面是我一直试图使用的代码,但无法使其正常工作 private void brandToolStripMenuItem_Click(object sender, EventArgs e) { List<Car> BrandSelect = new List<Car>(cars); var Se

我有一个保存在文本文件中的对象列表,可以显示在表单上。但是,现在我需要一个按钮,它只显示列表中基于属性的特定对象,在我的例子中是品牌。下面是我一直试图使用的代码,但无法使其正常工作

   private void brandToolStripMenuItem_Click(object sender, EventArgs e)
    {
        List<Car> BrandSelect = new List<Car>(cars);

        var SelectBrand = from c in BrandSelect
                         where c.Brand == textBox1.Text
                         select c;

        DisplayCar();
    }
private void brandToolStripMenuItem\u单击(对象发送方,事件参数e)
{
列表品牌选择=新列表(车辆);
var SelectBrand=来自BrandSelect中的c
其中c.Brand==textBox1.Text
选择c;
DisplayCar();
}
下面是完整的代码,如果需要更多信息,感谢您的帮助

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace Car_Manager
{
    public partial class Form1 : Form
    {
    string currentfile;
    Car c;
    int curIndex = -1;
    List<Car> cars = new List<Car>();
    public Form1()
    {
        InitializeComponent();
        c = new Car();
        saveFileDialog1.CreatePrompt = true;
        saveFileDialog1.OverwritePrompt = true;
        saveFileDialog1.FileName = "myText";
        saveFileDialog1.DefaultExt = "txt";
        saveFileDialog1.Filter =
            "Text files (*.txt)|*.txt|All files (*.*)|*.*";
    }

    public void clearForm()
    {
        txtBrand.Text = "";
        txtModel.Text = "";
        txtYear.Text = "";
        txtPrice.Text = "";
        txtNumMiles.Text = "";
        txtInformation.Text = "";
        radAutomatic.Checked = false;
        radManual.Checked = false;
        radConvertible.Checked = false;
        radCoupe.Checked = false;
        radEstate.Checked = false;
        radHatchback.Checked = false;
        radHPV.Checked = false;
        radSaloon.Checked = false;
        radSUV.Checked = false;


    }

    private void DisplayCar()
    {
        txtBrand.Text = c.Brand;
        txtModel.Text = c.Model;
        txtYear.Text = c.Year;
        txtPrice.Text = c.Price;
        txtNumMiles.Text = c.NumMiles;
        DisplayBody();
        DisplayGear();
        string str = "";
        for (int i = 0; i < c.Information.Count(); i++)
            str += c.Information[i] + "\r\n";
        txtInformation.Text = str;

    }

    private void FormToObject()
    {
        c.Brand = txtBrand.Text;
        c.Model = txtModel.Text;
        c.Year = txtYear.Text;
        c.Price = txtPrice.Text;
        c.NumMiles = txtNumMiles.Text;
        BodyCheck();
        GearCheck();
    }

    private void BodyCheck()
    {
        if (radHatchback.Checked == true)
        { c.Body = radHatchback.Text; }

        else if (radHPV.Checked == true)
        { c.Body = radHPV.Text; }

        else if (radSUV.Checked == true)
        { c.Body = radSUV.Text; }

        else if (radSaloon.Checked == true)
        { c.Body = radSaloon.Text; }

        else if (radConvertible.Checked == true)
        { c.Body = radConvertible.Text; }

        else if (radCoupe.Checked == true)
        { c.Body = radCoupe.Text; }

        else if (radEstate.Checked == true)
        { c.Body = radEstate.Text; }

    }

    private void DisplayBody()
    {
        if (c.Body == "Hatchback")
        { radHatchback.PerformClick(); }

        else if (c.Body == "HPV")
        { radHPV.PerformClick(); }

        else if (c.Body == "SUV")
        { radSUV.PerformClick(); }

        else if (c.Body == "Convertible")
        { radConvertible.PerformClick(); }

        else if (c.Body == "Saloon")
        { radSaloon.PerformClick(); }

        else if (c.Body == "Coupe")
        { radSaloon.PerformClick(); }

        else if (c.Body == "Estate")
        { radEstate.PerformClick(); }
    }

    private void GearCheck()
    {
        if (radAutomatic.Checked == true)
        { c.GearBox = radAutomatic.Text; }

        else if (radManual.Checked == true)
        { c.GearBox = radManual.Text; }
    }

    private void DisplayGear()
    {
        if (c.GearBox == "Manual")
        { radManual.PerformClick(); }

        else if (c.GearBox == "Automatic")
        { radAutomatic.PerformClick(); }
    }

    private void openToolStripMenuItem_Click(object sender, EventArgs e)
    {

        openFileDialog1.ShowDialog();            
        currentfile = openFileDialog1.FileName;
        saveToolStripMenuItem.Enabled = true;            
        Stream s1 = openFileDialog1.OpenFile();            
        StreamReader reader = new StreamReader(s1);

        while (reader.Peek() != -1)
        {              
            string str = reader.ReadLine();
            Car c = new Car();
            c.ReadString(str);
            cars.Add(c);
        }

        curIndex = 0;
        c = cars[curIndex];
        DisplayCar();
        reader.Close();
    }

    private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
    {
        // Save everything in a dialog box
        saveFileDialog1.ShowDialog();
        // Open the file and save the information
        Stream textOut = saveFileDialog1.OpenFile();
        StreamWriter writer = new StreamWriter(textOut);

        FormToObject();
           string str = c.GetToString();
            writer.WriteLine(str);
            writer.Close();

    }

    private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {
        // Save the file with the current file name
        FileStream f1 = new FileStream(currentfile, FileMode.Create, FileAccess.Write);
        StreamWriter writer = new StreamWriter(f1);
        // get the object into a string
        FormToObject();

        StreamWriter file = new System.IO.StreamWriter(f1);
        cars.ForEach(file.WriteLine);
        file.Close();


    }

    private void btnAddInfo_Click(object sender, EventArgs e)
    {
        c.Information.Add(txtAddInfo.Text);
        string str = "";
        for (int i = 0; i < c.Information.Count(); i++)
            str += c.Information[i] + "\r\n";
        txtInformation.Text = str;
    }

    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        this.Close();
    }

    private void btnClear_Click(object sender, EventArgs e)
    {
        txtInformation.Text = "";
    }

    private void addToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

    private void btnPreviousCar_Click(object sender, EventArgs e)
    {
        curIndex--;
        if (curIndex < 0)

            curIndex = cars.Count - 1;
        c = cars[curIndex];
        DisplayCar();
    }

    private void btnNextCar_Click(object sender, EventArgs e)
    {
        curIndex++;
        if (curIndex >= cars.Count)

            curIndex = 0;
        c = cars[curIndex];
        DisplayCar();

    }

    private void button1_Click(object sender, EventArgs e)
    {

        int a = cars.Count;
        textBox1.Text = Convert.ToString(cars[2]);
    }

    private void btnEditCar_Click(object sender, EventArgs e)
    {
        txtBrand.ReadOnly = false;
        txtModel.ReadOnly = false;
        txtYear.ReadOnly = false;
        txtPrice.ReadOnly = false;
        txtNumMiles.ReadOnly = false;
        txtAddInfo.ReadOnly = false;

    }

    private void copyToolStripMenuItem_Click(object sender, EventArgs e)
    {

    }

    private void brandToolStripMenuItem_Click(object sender, EventArgs e)
    {
        List<Car> BrandSelect = new List<Car>(cars);

        var SelectBrand = from c in BrandSelect
                         where c.Brand == textBox1.Text
                         select c;

        DisplayCar();
    }

    private void yearToolStripMenuItem1_Click(object sender, EventArgs e)
    {


    }
}

class Car
{
    //List of properties
    private string brand;
    private string model;
    private string year;
    private string price;
    private string numMiles;
    private string body;
    private string gearbox;
    private List<string> information;

    //Constructor

    public Car() //Default Constructor
    {
        brand = "Unknown";
        model = "Unknown";
        year = "Unknown";
        price = "Unknown";
        numMiles = "Unknown";
        information = new List<string>();
    }

    public Car(string str)
    {
        information = new List<string>();
        ReadString(str);
    }

    public void ReadString(string str)
    {
        string[] words = str.Split('|');
        int Nwords = words.Count();
        brand = words[0];
        model = words[1];
        year = words[2];
        price = words[3];
        numMiles = words[4];
        body = words[5];
        gearbox = words[6];
        information.Clear();
        for (int i = 7; i < Nwords; i++)
            information.Add(words[i]);
    }

    //Methods
    public string Brand
    {
        get { return brand; }
        set { brand = value; }
    }

    public string Model
    {
        get { return model; }
        set { model = value; }
    }

    public string Year
    {
        get { return year; }
        set { year = value; }
    }

    public string Price
    {
        get { return price; }
        set { price = value; }
    }

    public string NumMiles
    {
        get { return numMiles; }
        set { numMiles = value; }
    }

    public string Body
    {
        get { return body; }
        set { body = value; }
    }

    public string GearBox
    {
        get { return gearbox; }
        set { gearbox = value; }
    }

    public List<string> Information
    {
        get { return information; }
        set { information = value; }
    }

    public string GetToString()
    {
        string str = "";
        str += brand + "|";
        str += model + "|";
        str += year + "|";
        str += price + "|";
        str += numMiles + "|";
        str += body + "|";
        str += gearbox + "|";
        for (int i = 0; i < information.Count(); i++)
            str += information[i] + "|";
        return str;
    }

}
使用系统;
使用System.Collections.Generic;
使用系统组件模型;
使用系统数据;
使用系统图;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows.Forms;
使用System.IO;
名称空间汽车管理器
{
公共部分类Form1:Form
{
字符串文件;
c车;
int curIndex=-1;
列出车辆=新列表();
公共表格1()
{
初始化组件();
c=新车();
saveFileDialog1.CreatePrompt=true;
saveFileDialog1.OverwritePrompt=true;
saveFileDialog1.FileName=“myText”;
saveFileDialog1.DefaultExt=“txt”;
saveFileDialog1.Filter=
“文本文件(*.txt)|*.txt |所有文件(*.*)|*.*”;
}
公共无效clearForm()
{
txtBrand.Text=“”;
txtModel.Text=“”;
txtYear.Text=“”;
txtPrice.Text=“”;
txtNumMiles.Text=“”;
txtInformation.Text=“”;
RadaAutomatic.Checked=false;
radManual.Checked=假;
radconverable.Checked=false;
radCoupe.Checked=假;
radEstate.Checked=false;
radHatchback.Checked=false;
radHPV.Checked=false;
radSaloon.Checked=假;
radSUV.Checked=假;
}
私家车
{
txtBrand.Text=c.品牌;
txtModel.Text=c.Model;
txtYear.Text=c.年;
Text=c.价格;
txtNumMiles.Text=c.NumMiles;
DisplayBody();
DisplayGear();
字符串str=“”;
for(int i=0;iprivate void brandToolStripMenuItem_Click(object sender, EventArgs e)
{
    // You already have list of cars, this line will copy your list
    // into a new one, which is unnecessary work (you don't use it later).
    // You don't need this:
    List<Car> BrandSelect = new List<Car>(cars);

    // the "c" here is not the "c" that is the field of your form
    // it's a part of the syntax of linq query
    var SelectBrand = from c in BrandSelect
                     where c.Brand == textBox1.Text
                     select c;

    // This method displays what is in the field "c" (this.c)
    // ... and the content of "c" didn't change at all
    DisplayCar();
}
private void brandToolStripMenuItem_Click(object sender, EventArgs e)
{
     //beware this can be null
     this.c = (from a in this.cars 
               where a.Brand == textBox1.Text 
               select a).FirstOrDefault();
}