0

假设我的表(dbo.event)中有 100 个事件 id,目前我生成 101 个事件 id,所以我只想获取这个事件 id(101)。我为此使用 linq to 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相关数据?

4

1 回答 1

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# 中的查询语法不支持某些方法,例如直接(与 VB.NET 相比,VB.NET 具有对, , ,Take的语言支持)。SkipTakeDistinctAggregate

于 2013-10-09T08:08:07.803 回答