Предположим, у меня есть 2 DataTables, DSALL и DSSome для хранения информации студентПроверьте, существуют ли конкретные данные в DataTable
DSALL (магазин вся информация студент)
SID (PK)
Имя
Адрес
Телефон
...
DSSome (Хранить только SID для некоторых конкретных студентов)
SID (Unique)
Теперь я хочу C# функция, чтобы проверить все SID в DSSome существуют в DSALL. Функция возвращает true, если все SID существует в DSALL, возвращает false, если в противном случае.
Традиционный способ
protected bool checkSID(DataTable DSALL, DataTable DSSome){
for (int i=0; i<DSSome.Rows.Count; i++){
bool isFound = false;
string SID = DSSome.Rows[i]["SID"].ToString();
for (int j=0; j<DSALL.Rows.Count; j++){
string _SID = DSALL.Rows[j]["SID"].ToString();
if (SID == _SID) { isFound = true; break; }
}
if (!isFound) return false;
}
return true;
}
Есть ли какой-либо другой простой способ эффективный способ решить эту проблему?
Вы можете использовать [DataTable.Select] (http://msdn.microsoft.com/en-us/library/det4aw50.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet -2) для замены внутреннего цикла - DataRow [] rows = DSALL.Select ("SID =" + _SID); if (rows.Length> 0) {isFound = true; } '. LINQ может быть более эффективным для чтения, но я не знаю, действительно ли это будет * более эффективным. – Tim