public bool HasUniqueKey(IEnumerable<string> keyNames) { Assert.IsTrue(!keyNames.IsNullOrEmpty(), "No key name"); Assert.IsTrue(!keyNames.HasDuplication(), string.Format("Has duplicated keys in {0} \n {1}", filePath, keyNames.ToStringList(", "))); Assert.IsTrue(keyNames.All(x => columnInfo.ContainsKey(x)), string.Format("Has unknown key in {0} \n {1}", filePath, keyNames.ToStringList(", "))); var tempList = new List<RowData>(rows); return rows.All(delegate(RowData currRow) { bool result = tempList.Remove(currRow); Assert.IsTrue(result); IEnumerable<int> indexes = (from key in keyNames select columnInfo.IndexOf(key)); bool notHaveSameKey = tempList.TrueForAll(x => !currRow.HasSameValueInAll(x, indexes)); if (!notHaveSameKey) { List<RowData> errDatas = tempList.FindAll(x => currRow.HasSameValueInAll(x, indexes)); Debug.LogError((from row in errDatas select row.Dump().RemoveWhiteSpace()).ToStringList("\n")); } return notHaveSameKey; }); }
public IEnumerable<int> IndexesOf(IEnumerable<string> keyNames) { Assert.IsTrue(!keyNames.IsNullOrEmpty()); Assert.IsTrue(!keyNames.HasDuplication()); Assert.IsTrue(keyNames.All(x => columnInfo.ContainsKey(x)), "Has unknown keyName in \n" + keyNames.ToStringList(",")); return keyNames.Select(x => columnInfo.IndexOf(x)); }