[c#] dataTable에 값이 있는지 확인 하시겠습니까?

AuthorBookname 두 열이있는 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 열을 모르고 PEPSIrows’c 열에 셀 값 이 있는지 확인하려면 어떻게해야합니까? 모든 것을 반복하여 알아낼 수 있지만 더 좋은 방법이 있습니까? –

예, 다음 쿼리를 사용할 수 있습니다.

DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
    .Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));


답변

Linq를 사용할 수 있습니다. 다음과 같은 것 :

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;


답변

DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}

using 절에 추가하십시오.

using System.Linq;

다음을 추가하십시오.

System.Data.DataSetExtensions

참조.


답변

DataTable.Select () 메서드 를 사용할 수 있어야합니다 . 이렇게 할 수 있습니다.

if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
    ...

Select () 함수는 where 문과 일치하는 결과에 대한 DataRows 배열을 반환합니다.


답변

데이터베이스를 IEnumberable로 설정하고 linq를 사용하여 값이 있는지 확인할 수 있습니다. 이 링크를 확인하십시오

레코드가 있는지 확인하기위한 Datatable의 LINQ 쿼리

주어진 예는

var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...

당신은 어떤 곳으로 보충 할 수 있습니다


답변