Author 및 Bookname 두 열이있는 DataTable이 있습니다.
주어진 문자열 값 Author가 이미 DataTable 에 있는지 확인하고 싶습니다 . 배열과 같이 그것을 확인하는 내장 방법이 array.contains
있습니까?
Author 및 Bookname 두 열이있는 DataTable이 있습니다.
주어진 문자열 값 Author가 이미 DataTable 에 있는지 확인하고 싶습니다 . 배열과 같이 그것을 확인하는 내장 방법이 array.contains
있습니까?
답변:
다음 LINQ-to-DataSet
과 함께 사용할 수 있습니다 Enumerable.Any
.
String author = "John Grisham";
bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));
또 다른 접근 방식은 다음을 사용하는 것입니다 DataTable.Select
.
DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'");
if(foundAuthors.Length != 0)
{
// do something...
}
Q : Headers 열을 모르고
PEPSI
rows'c 열에 셀 값 이 있는지 확인하려면 어떻게해야합니까? 모든 것을 반복하여 알아낼 수 있지만 더 좋은 방법이 있습니까? –
예, 다음 쿼리를 사용할 수 있습니다.
DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
.Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
System.Data.DataSetExtensions
참조 및 using System.Linq;
사용하여 클래스
DataTable.Select
구문은 제한적이지만 LINQ는 전체 .NET 프레임 워크 또는 사용자 지정 메서드를 사용할 수 있습니다. 당신이 .NET 사용한다 2에 붙어 그래서 경우에만 DataTable.Select
, 그렇지 않으면 난 항상 LINQ 선호하는 것
tbl.Select()
가있는 경우는 다른 접근 방식보다 훨씬 빠릅니다.
DataTable.Select () 메서드 를 사용할 수 있어야합니다 . 이렇게 할 수 있습니다.
if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
...
Select () 함수는 where 문과 일치하는 결과에 대한 DataRows 배열을 반환합니다.
데이터베이스를 IEnumberable로 설정하고 linq를 사용하여 값이 있는지 확인할 수 있습니다. 이 링크를 확인하십시오
레코드가 있는지 확인하기위한 Datatable의 LINQ 쿼리
주어진 예는
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
당신은 어떤 곳으로 보충 할 수 있습니다
table.Any(t => t.Author == author);