假设我的表(dbo.event)中有100个事件ID,目前我生成了101个事件ID 所以我想只得到这个事件id(101)。我使用linq来sql查询。 这是我的代码。
protected void getDataforemail(int EventID,int ClientID)
{
try
{
EventManagerDataContext db = new EventManagerDataContext();
{
var q = from a in db.EMR_EVENTs
join b in db.EMR_CLIENTs on a.ClientID equals b.ClientID
where a.ClientID == ClientID
orderby a.EventID descending
select new
{
EventID = a.EventID,
Client_Name = b.Name,
Event_Name = a.Name,
}.Take(1);
q.ToString();
}
}
catch (Exception)
{
throw;
}
}
但是这对我不起作用,我怎样才能获取新生成的event_id
相关数据?
答案 0 :(得分:2)
您可以对序列使用Enumerable.Take
而不是匿名类型,因此您需要将查询放在括号中:
var q = (from a in db.EMR_EVENTs
join b in db.EMR_CLIENTs on a.ClientID equals b.ClientID
where a.ClientID == ClientID
orderby a.EventID descending
select new
{
EventID = a.EventID,
Client_Name = b.Name,
Event_Name = a.Name,
}).Take(1);
C#中的查询语法不直接支持Take
之类的某些方法(与VB.NET相反,后者对Skip
,Take
,Distinct
提供语言支持, Aggregate
)。