2010-07-28 67 views
2

嘿,我有這樣的代碼在這裏:將收藏中的所有物品與另一個收藏中的物品進行比較?

ArrayList arrayList = new ArrayList(); 
arrayList.add("one"); 
arrayList.add("two"); 
arrayList.add("three"); 

List<DataRow> dataList = GetDataList(some params); 

現在我要檢查,如果ArrayList包含從DataList控件療法元素。該字符串位於dataList的itemarray [0]中。有沒有一個很好的短代碼版本來做到這一點?

感謝:-)

回答

4

在.NET 3.5,檢查所有從一個列表中的元素都包含在另一個列表:

bool result = list.All(x => dataList.Contains(x)); 

或者您也可以使用ExceptAny組合做:

bool result = !list.Except(dataList).Any(); 

在你的榜樣,你使用的是ArrayList。您應該將其更改爲List<object>List<string>以使用這些方法。否則,你可以寫arrayList.Cast<object>()

bool result = arrayList.Cast<object>().All(x => dataList.Contains(x)); 
+0

謝謝,你確定第一個嗎?我只有所有的dataList? – grady 2010-07-28 06:59:51

+0

我強烈建議你不要在新代碼中使用ArrayList。改爲使用列表。查看我的更新。 – 2010-07-28 07:03:38

+0

是的,你是對的,我把它改爲列表,但仍然有一個列表有,另一個字符串。東西仍然丟失...... – grady 2010-07-28 07:07:02