簡體   English   中英

如何在 class 屬性中找到值?

[英]How do I find a value inside class properties?

我有一長串 100 名學生的名單。 我正在構建一個按學生姓名搜索學生的“查找”對話框。 這是我的 class 屬性:

我的代碼

public partial class FF : Window
{
    public FF()
    {
        InitializeComponent();

        List<User> items = new List<User>();
        items.Add(new User() { Name = "John Doe", Age = 42 });
        items.Add(new User() { Name = "Jane Doe", Age = 39 });
        items.Add(new User() { Name = "Sammy Doe", Age = 13 });
        lvStudents.ItemsSource = items;

    }

    public class User
    {
        public string Name { get; set; }

        public int Age { get; set; }
    }

我的 XAML

<DockPanel Grid.Row="0" Grid.Column="10" Grid.ColumnSpan="10" Grid.RowSpan="10">
    <ListView Name="lvStudents">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Name" Width="100" DisplayMemberBinding="{Binding Name}" />
                <GridViewColumn Header="Age" Width="30" DisplayMemberBinding="{Binding Age}" />
            </GridView>
        </ListView.View>
    </ListView>
</DockPanel>

**我嘗試過的事情**

    private void FindStudent(string name)
    {
        if (stud.Name.Any(str => str.Contains(name)))
        {
            MessageBox.Show("Student found!");
        }
        else
        {
            MessageBox.Show("Student not found!");
        }
    }

每次我運行上面的代碼時,我都沒有得到任何特定的錯誤。 但是我得到了錯誤的結果,即找不到學生。 為什么?

private void connectDb()
{
     SqlConnection conn = new SqlConnection("YOUR DATABASE LOCATION/ DATABASE PATH");
     conn.Open(); // initalize your database connection

}

private void searchForStudentName()
{
   string name;// = your textbox that holds value of students name;
   this.connectDb(); //your connection into database
   SqlCommand cmd = new SqlCommand("Select * from ['YOUR TABLE NAME'] where Name = @Name",conn);
   cmd.parameters.AddWithValue("@Name", name);
   dr= cmd.ExcecuteReader();


  if(dr.Read())//meaning, the system found the value of the input data/ name
  {
     ListViewItem lvi = new ListViewItem(dr["NAME"].ToString);// name will be displayed in listview control
     listView1.items.add(lvi);
  }else
  {
    //there is no data found
  }
}

最后,我解決了這個問題。 感謝所有貢獻並回答我的人。

private void FindStudent(string name)
{
    User std = items.FirstOrDefault(s => s.Name.Contains(name));
    if (std != null)
    {
        this.Title = "Student found!";
    }
    else
    {
        this.Title = "Student NOT found!";
    }
}

if (stud.Any(st => st.Name.Contains(name)))

代替

if (stud.Name.Any(str => str.Contains(name)))

與“使用 System.Linq;” 當然

PS“螺柱”正如我們在問題中看到的那樣,是列表。 我們在學生列表上調用 Any() 方法,並傳遞一個 lambda 謂詞來檢查每個學生的姓名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM