iT邦幫忙

0

List中的Contains 方法

c#
  • 分享至 

  • xImage

大家好

在練習一個程式時發現一個問題

我想判斷已存在LIST裡面的值是否有跟textbox的值有重複
我原本是使用 contain 這個方法
可是卻都出現錯誤
所以就只能用循序搜尋去做
不知道是哪邊寫錯了可以請各位指導我嗎QQ
以下是可執行的程式

bool find;       
for (int i = 0; i < List_Member.Count; i++)
{
    if (List_Member[i].empName == txtName.Text)
    {
        find = true;
        break;
    }
}

if (find)
{
    MessageBox.Show(txtName.Text + " is already exist!");
}

以下是出現錯誤的程式~

bool find;
find = List_Member.Contains(new Member { empName = txtName.Text });
if (find)
{
    MessageBox.Show(txtName.Text + " is already exist!");
}

麻煩各位了~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
外獅佬
iT邦大師 1 級 ‧ 2014-03-04 23:59:40
最佳解答

find = List_Member.Contains(new Member { empName = txtName.Text });

這...contains,必須是所有成員都相同,你的List_Member只有empName這個欄位嗎?如果不是你這麼寫基本上沒什麼機會找到你要的資料。

外獅佬 iT邦大師 1 級 ‧ 2014-03-05 00:06:42 檢舉

如果只是要找Member中某個成員是否符合條件,應該是用List<T>.FindIndex

&lt;pre class="c" name="code">
find = List_Member.FindIndex(m=>m.empName.Equals(txtName.Text)) >= 0;
2

&lt;pre class="c" name="code">
find = List_Member.Contains(new Member { empName = txtName.Text }); 

建議可以改成

&lt;pre class="c" name="code">
find = List_Member.Contains(txtName.Text);  

我要發表回答

立即登入回答