繁体   English   中英

获取数据库中表的最后一条记录?

[英]get last record of a table in database?

我正在开发一个项目,在用户插入客户的数据后,他想打印客户的 ID 和名称,这是 ID 的代码

int getPatnID()
    {
        int ID = (from i in Db.Patients
                  select i.patn_ID).Max();
        return ID;
    }

我已经编写了代码来获取名称,但我无法完成它

string getPatnName()
    {
        string name = (from n in Db.Patients
                       select n.patn_name).

        return name;
    }

我该怎么写才能完成它?

这应该总是在执行时获得最后插入的记录(假设 patn_id 是自动递增的)

string GetPatnName() 
{
    string name = (from n in Db.Patients 
                   orderby n.patn_ID descending 
                   select n.patn_name).FirstOrDefault();
    return name;
}
string getPatnName() {
    string name = Db.Patients.Last(p => p.patn_ID).patn_name;
    return name;
}

我建议你多花点时间研究 LINQ - 它是一个非常丰富和强大的库: http://msdn.microsoft.com/en-us/library/bb397926.aspx

更改getPatnName以获取 id:

string getPatnName(int id)
{
    string name = (from n in Db.Patients
                   where n.patn_ID == id
                   select n.patn_name).SingleOrDefault();

    return name;
}

并给它getPatnID()的结果

如果您尝试获取刚刚输入的最后一位患者的姓名,并且您有第一个查询的 ID,则只需要 LINQ 中的 where 子句。

string name = (from n in Db.Patients
       where n.patn_ID == ID
       select n.patn_name);

以您的方式获取 id 是错误的。 不确定您使用的是什么,但 linq-2-sql 和实体框架在保存更改时都会填写实体 ID:

    Patient patient = new Patient();
    Console.WriteLine(patient.Id); // will NOT be filled in
    Db.Patients.Add(patient);
    Db.SubmitChanges(); // SaveChanges in EF
    Console.WriteLine(patient.Id); // will be filled in

为什么不只创建一个患者 class 并返回一个实例,如下所示

public class Patient
{
    public int PatientID { get; set; }
    public string Name { get; set; }
}


static Patient getDetails()
    {
        using (DataClasses1DataContext db = new DataClasses1DataContext())
        {
            var c = (from x in db.Patients.OrderByDescending(u => u.PatientID)
                     select new Patient()
                     {
                         PatientID = x.PatientID,
                         Name = x.Name
                     }).FirstOrDefault();
            return c;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM