我有以下代碼:簡化列表中查找一個元素,可能使用LINQ
class TestClass
{
public string StringValue {
get; set;
}
public int IntValue {
get; set;
}
}
class MainClass
{
private readonly List<TestClass> MyList;
public MainClass()
{
MyList = new List<TestClass>();
}
public void RemoveTestClass(string strValue)
{
int ndx = 0;
while (ndx < MyList.Count)
{
if (MyList[ndx].StringValue.Equals(strValue))
break;
ndx++;
}
MyList.RemoveAt(ndx);
}
public void RemoveTestClass(int intValue)
{
int ndx = 0;
while (ndx < MyList.Count)
{
if (MyList[ndx].IntValue == intValue)
break;
ndx++;
}
MyList.RemoveAt(ndx);
}
}
我想知道的是,如果有一個更簡單的方法,可能使用LINQ,更換while
循環在2 RemoveTestClass
功能,而不是迭代通過每個元素,就像我在做什麼?
你也可以使用[List.Remove](http://msdn.microsoft.com/en-us/library/cd666k3e%28v=VS.100%29.aspx)和'List.Find'代替' List.FindIndex'不是嗎? –
@TimSchmelter但是如果找不到匹配的項目,find會拋出一個錯誤。 – Fischermaen
@Fischermaen:但@Mark已經處理了'i = -1'的情況。你也可以處理'List.Find'爲'null'的情況。 –