我使用实体框架生成数据库表类:
public partial class TPTM605
{
public string EMP { get; set; }
public string ATTD_DATE { get; set; }
public string ATTD_TIME { get; set; }
public string MAC_NO { get; set; }
public Nullable<decimal> GPS_LATI { get; set; }
public Nullable<decimal> GPS_LONG { get; set; }
public string APRO_EMP { get; set; }
public string APRO_DATE { get; set; }
public string APRO_YN { get; set; }
public string PROC_DATE { get; set; }
public string ERR_CODE { get; set; }
public string KN_DATE { get; set; }
}
然后我创建另一个类:
public class AproData
{
// Employee ID
public string emp { get; set; }
// Attendance Date
public string attd_date { get; set; }
/// Attendance time
public string attd_time { get; set; }
// Approve (Y/N)
public string apro_yn { get; set; }
}
在TPTM605类中,其属性(EMP,ATTD_DATE,ATTD_TIME)是主键,而属性的默认值(APRO_YN)为null。 然后创建一个WCF方法SetAproMissCard(字符串apro_emp,字符串apro_date,列表数据),输入参数(列表数据)是领导者批准的是/否的最终结果列表。
我想使用AproData(ID,日期,时间)在DbSet中查找记录, 然后使用AproData(apro_yn)更新TPTM605的属性(APRO_YN)。
public bool SetAproMissCard(string apro_emp, string apro_date, List<AproData> Data)
{
bool rst = false;
try
{
using (OracleEmpAppModelEntities oEAME = new OracleEmpAppModelEntities())
{
foreach (var item in Data)
{
oEAME.TPTM605.Where(t => t.EMP.Equals(item.emp) && t.ATTD_DATE.Equals(item.attd_date) && t.ATTD_TIME.Equals(item.attd_time))
.ToList().ForEach(t => { t.APRO_EMP = apro_emp; t.APRO_DATE = apro_date; t.APRO_YN = item.apro_yn; });
}
oEAME.SaveChanges();
}
rst = true;
}
工作正常。但是C#foreach循环语法看起来不够聪明。
p.s。抱歉,我的英语不好。.希望您理解我的问题。
答案 0 :(得分:0)
尝试以下操作:
var results = (from item in Data
join t in oEAME.TPTM605 on item.emp equals t.EMP
where t.ATTD_DATE.Equals(item.attd_date) && t.ATTD_TIME.Equals(item.attd_time)
select new { APRO_EMP = apro_emp, APRO_DATE = apro_date, APRO_YN = item.apro_yn }).ToList();