วิธีที่ดีที่สุดในการตรวจสอบว่าตารางข้อมูลมีค่าว่างอยู่หรือไม่?
เวลาส่วนใหญ่ในสถานการณ์ของเราหนึ่งคอลัมน์จะมีค่าว่างทั้งหมด
(ข้อมูลนี้ถูกส่งคืนโดยแอปพลิเคชันของบุคคลที่สาม - เรากำลังพยายามที่จะประเมินค่าก่อนที่แอปพลิเคชันของเราจะประมวลผลตารางข้อมูล)
วิธีที่ดีที่สุดในการตรวจสอบว่าตารางข้อมูลมีค่าว่างอยู่หรือไม่?
เวลาส่วนใหญ่ในสถานการณ์ของเราหนึ่งคอลัมน์จะมีค่าว่างทั้งหมด
(ข้อมูลนี้ถูกส่งคืนโดยแอปพลิเคชันของบุคคลที่สาม - เรากำลังพยายามที่จะประเมินค่าก่อนที่แอปพลิเคชันของเราจะประมวลผลตารางข้อมูล)
คำตอบ:
ลองเปรียบเทียบค่าของคอลัมน์กับDBNull.Valueค่าเพื่อกรองและจัดการค่า null ด้วยวิธีใดก็ได้ที่คุณเห็นว่าเหมาะสม
foreach(DataRow row in table.Rows)
{
object value = row["ColumnName"];
if (value == DBNull.Value)
// do something
else
// do something else
}
ข้อมูลเพิ่มเติมเกี่ยวกับคลาส DBNull
หากคุณต้องการตรวจสอบว่ามีค่า null ในตารางหรือไม่คุณสามารถใช้วิธีนี้:
public static bool HasNull(this DataTable table)
{
foreach (DataColumn column in table.Columns)
{
if (table.Rows.OfType<DataRow>().Any(r => r.IsNull(column)))
return true;
}
return false;
}
ซึ่งจะให้คุณเขียนสิ่งนี้:
table.HasNull();
table.AsEnumerable()แทนtable.Rows.OfType<DataRow>()
foreach(DataRow row in dataTable.Rows)
{
if(row.IsNull("myColumn"))
throw new Exception("Empty value!")
}
คุณสามารถวนซ้ำโยนแถวและคอลัมน์ตรวจสอบค่า null ติดตามว่ามีโมฆะที่มีบูลหรือไม่จากนั้นตรวจสอบหลังจากวนลูปผ่านตารางและจัดการ
//your DataTable, replace with table get code
DataTable table = new DataTable();
bool tableHasNull = false;
foreach (DataRow row in table.Rows)
{
foreach (DataColumn col in table.Columns)
{
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
}
}
}
if (tableHasNull)
{
//handle null in table
}
คุณยังสามารถออกมาจาก foreach loop ด้วยคำสั่ง break เช่น
//test for null here
if (row[col] == DBNull.Value)
{
tableHasNull = true;
break;
}
เพื่อบันทึกการวนซ้ำในส่วนที่เหลือของตาราง
ฉันจะทำเหมือน ....
(!DBNull.Value.Equals(dataSet.Tables[6].Rows[0]["_id"]))
คุณสามารถ null / blank / space ค่า Etc โดยใช้ LinQ ใช้แบบสอบถามต่อไปนี้
var BlankValueRows = (from dr1 in Dt.AsEnumerable()
where dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
|| dr1["Columnname"].ToString() == ""
select Columnname);
ที่นี่แทนที่Columnnameด้วยชื่อคอลัมน์ตารางและ""รายการค้นหาของคุณในโค้ดด้านบนเรากำลังมองหาค่า null
DataTable dt = new DataTable();
foreach (DataRow dr in dt.Rows)
{
if (dr["Column_Name"] == DBNull.Value)
{
//Do something
}
else
{
//Do something
}
}