尝试使用linq获取新生成的事件id到sql查询

时间:2013-10-09 07:34:33

标签: sql-server-2008 c#-4.0 linq-to-sql

假设我的表(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相关数据?

1 个答案:

答案 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相反,后者对SkipTakeDistinct提供语言支持, Aggregate)。