получить последнюю запись таблицы в базе данных? - PullRequest
1 голос
/ 28 апреля 2011

Я занимаюсь разработкой проекта, и после того, как пользователь введет данные клиента, он должен напечатать идентификатор и имя клиента, это код удостоверения личности

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 ]

4 голосов
/ 28 апреля 2011

Это всегда должно получать последнюю вставленную запись во время выполнения (при условии, что patn_id автоматически увеличивается)

1 голос
/ 28 апреля 2011

Если вы пытаетесь получить имя последнего пациента, которого вы только что ввели, и у вас есть идентификатор в первом запросе, вам просто нужно выражение where в вашем LINQ.

string name = (from n in Db.Patients
       where n.patn_ID == ID
       select n.patn_name);
1 голос
/ 28 апреля 2011

Замените getPatnName на идентификатор:

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

    return name;
}

и дайте ему результат getPatnID()

1 голос
/ 28 апреля 2011
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

0 голосов
/ 28 апреля 2011

Почему бы просто не создать класс пациента, возвращающий экземпляр, как показано ниже

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;
        }
0 голосов
/ 28 апреля 2011

Получение идентификатора, как вы делаете, неправильно.Не уверен, что вы используете, но и linq-2-sql, и платформа управления данными заполняют идентификатор объекта при сохранении изменений:

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...