C kttdata = ACA.selectktt(stationName); List<Dictionary<string, string>> ptndata = ACA.selectprn(stationName); List<Dictionary<string, string>> resdata = new List<Dictionary<string, string>>(); if (kttdata != null && kttdata.Count > 0) { foreach (Dictionary<string,string> item in kttdata) { //List<Dictionary<string, string>> selected = ptndata.Where(p => p["SF_TRAIN_CODE"].ToString() == item["SF_TRAIN_CODE"].ToString() && p["START_DATE"].ToString() == item["START_DATE"].ToString() && p["STATION_NAME"].ToString() == item["STATION_NAME"].ToString()).ToList();// Dictionary<string, string> selected = ptndata.Find(p => { return p["SF_Train_Code"].ToString().Equals(item["SF_Train_Code"].ToString()) && p["Start_Date"].ToString().Equals(item["Start_Date"].ToString()) && p["Station_Name"].ToString().Equals(item["Station_Name"].ToString()); }); if (selected != null) { foreach (KeyValuePair<string, string> a in selected) { string key = a.Key; string value = a.Value; if (!item[key].ToString().Equals(value)) { resdata.Add(item); break; } } #region 简便方法 //foreach (string key in selected.Keys) //{ // if (!item[key].ToString().Equals(selected[key])) // { // resdata.Add(item); // break; // } //} #endregion ptndata.Remove(selected); } else { resdata.Add(item); } } }