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

时间:2011-04-27 21:51:26

标签: c# linq visual-studio-2008

我正在开发一个项目,在用户插入客户数据后,他想要打印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;
    }

我应该怎么写来完成它?

6 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

更改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()

的结果

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

以你的方式获取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

答案 5 :(得分:0)

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

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;
        }