Выбор значения столбца в LINQ TO SQL - PullRequest
1 голос
/ 02 марта 2012

У меня есть запрос в ссылке на SQL, как это

var password = (from userAccounts in myDb.Physicians
                            where userAccounts.Phy_UserName == txtUserName.Text
                            select userAccounts).FirstOrDefault();

Я хочу выбрать конкретный столбец с этим запросом, я хочу получить значение строки userAccounts.Password, userAccounts.Phy_FName, userAccounts.Phy_Password и т. д.

разрешено ли password.Phy_FName?предполагая, что у нас есть результат?как выбрать значение?

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Вы правильно поняли. ваш Phy_UserName должен быть столбцом в вашей базе данных. Он возвращает объект Physicians, и вы можете получить каждое значение следующим образом.

// `var physician` is the same as `Physician physician` 
// where you're declaring a Physician object from your DBML file

// we're using `p` for `physician` in the lambda select function
var physician = (from p in myDb.Physicians
                 where p.Phy_UserName == txtUserName.Text
                 select p).FirstOrDefault();

// now that you've got a `physician` object, you can use the properties
// within the object as follows..
var password = physician.Password;
var firstName = physician.Phy_FName;
// etc

// please note that the physician object you have currently has ALL of the 
// database fields for that particular physician

Теперь, если вы выберете только нужные свойства, вы подойдете к этому немного по-другому.

// first you declare a poco to store only the needed properties.

public class PhysicianViewModel {
    public string Password {get; set;}
    public string FirstName {get; set;}
}

// then you run your select query and drill down to grab
// only the required data fields from the database
var physicianViewModel = (from p in myDb.Physicians
                          where userAccounts.Phy_UserName == txtUserName.Text
                          select new PhysicianViewModel { 
                              Password = p.Password,
                              FirstName = p.Phy_FName }).FirstOrDefault();

// and using them is the same as the above example
// the only difference here is that the `physicianViewModel` doesn't 
// contain ANY properties other than the ones you specified.
var password = physicianViewModel.Password;
var firstName = physicianViewModel.FirstName;

Редактировать

Согласно вашему комментарию, приведенному ниже, это немного в стороне от предотвращения вставки значения null в поле string (nvarchar) в базе данных.

Самый простой способ сделать это - добавить обязательный атрибут в свойство и убедиться, что вы проверяете его перед отправкой.

public class Physician {
    [Required]
    public string Password {get; set;}
    public string Phy_FName {get; set;}
    public string Phy_LName {get; set;}
}

Если в базе данных установить допустимое пустое значение false, а затем обновить файл DBML, чтобы отразить изменения, атрибут [required] будет автоматически добавлен в свойство.

0 голосов
/ 02 марта 2012
 var password = (from userAccounts in myDb.Physicians
                 where userAccounts.Phy_UserName == txtUserName.Text
                 select new { 
                          Password = physician.Password,
                          FullName = physician.Phy_FName  }).FirstOrDefault();
0 голосов
/ 02 марта 2012
var physician = (from p in myDb.Physicians
                 where p.Phy_UserName == txtUserName.Text
                 select p).FirstOrDefault();

var password = physician.Password;
var fName = physician.Phy_FName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...