我有一個具有查詢結果的物件,該物件具有日期欄位,我需要處理欄位將日期“01-01-1991”更改為空的位置。我怎樣才能簡化這個 if 陳述句?
if(item.date01 == '01-01-1991')
item.date01 = null;
if(item.date02 == '01-01-1991')
item.date02 = null;
if(item.date03 == '01-01-1991')
item.date03 = null;
if(item.date04 == '01-01-1991')
item.date04 = null;
我嘗試使用foreach,但我不知道如何...
foreach(var item in itens)
{
if(item.obj == '01-01-1991')
item.obj = null;
}
uj5u.com熱心網友回復:
我不確定您是否有一個作業示例,因為“01-01-1991”中的單引號在字串或日期時間中使用無效。
另外,您提到 date01, date02, ... 是fields。在這種情況下,您可以執行以下操作:
var item = new DataItem();
void CheckAndSet(ref string? date)
{
if (date == "01-01-1900")
{
date = null;
}
}
CheckAndSet(ref item.date01);
CheckAndSet(ref item.date02);
CheckAndSet(ref item.date03);
CheckAndSet(ref item.date04);
public class DataItem
{
public string? date01;
public string? date02;
public string? date03;
public string? date04;
}
更詳細地說,您可以使用ref關鍵字來保留對原始變數的參考,在本例中是 DataItem 類中的 date0x 欄位。
uj5u.com熱心網友回復:
迭代每一項專案
foreach(var item in items)
{
this.CheckAndSetDate(ref item.date01,"01-01-1991");
this.CheckAndSetDate(ref item.date02,"01-01-1991");
this.CheckAndSetDate(ref item.date03,"01-01-1991");
this.CheckAndSetDate(ref item.date04,"01-01-1991");
}
然后創建驗證功能
public void CheckAndSetDate(ref string date, string value)
{
date = date == value ? null : date;
}
或者
foreach(var item in items)
{
item.date01 = this.CheckAndSetDate(item.date01,"01-01-1991");
item.date02 = this.CheckAndSetDate(item.date02,"01-01-1991");
item.date03 = this.CheckAndSetDate(item.date03,"01-01-1991");
item.date04 = this.CheckAndSetDate(item.date04,"01-01-1991");
}
public stringCheckAndSetDate(ref string date, string value)
{
return date == value ? null : date;
}
uj5u.com熱心網友回復:
您可以使用反射。
foreach(var element in (IEnumerable)item)
{
Type type = element.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach(PropertyInfo p in properties)
{
if(p.GetValue(element,null) == "01-01-1991")
{
p.SetValue(item, null, null)
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524208.html
標籤:C#。网
