为什么我的 LINQ 查询不从数据库中打印出数据?
Why do not my LINQ query print out data from the database?
我有两个独立的 classes。登录和用户内容。我希望如果你输入你的个人号码,你应该“登录”。然后你应该可以得到数据了。
我将数字传递给 BankContent 方法。在那里我想从用户那里得到名字,但是当我写的时候我只把这条消息发送到控制台。 Welcome! Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[System.String]
所以我没有得到用户的名字。有谁知道为什么?
登录class
public class Login : ILogin
{
private readonly UserContent _userContent;
private readonly ApplicationDbContext _db;
public Login(UserContent userContent, ApplicationDbContext db)
{
_userContent = userContent;
_db = db;
}
public void Enter()
{
Console.WriteLine("Enter your Social Number to login");
var number = Convert.ToInt32(Console.ReadLine());
var result = _db.Customers.Where(x => x.SocialNumber == number).Any();
if (_db == null)
{
Console.WriteLine($"No customer with {number} was found");
return;
}
if (result == true)
{
_userContent.BankContent(number);
}
else
{
Console.WriteLine($"No customer with {number} was found!");
}
}
}
使用 BankContent 方法的 UserContent
public class UserContent : IUserContent
{
private readonly ApplicationDbContext _db;
public UserContent(ApplicationDbContext db)
{
_db = db;
}
public void BankContent(int number)
{
var name = _db.Customers.Where(z => z.SocialNumber == number).Select(x => x.FirstName);
Console.WriteLine("Welcome! " + name);
}
}
Select()
方法在源 IEnumerable<T>
序列的每个元素上调用提供的选择器委托,并且 return 一个新结果 IEnumerable<U>
序列包含每个元素的输出调用。
所以在你的情况下:
var name = _db.Customers.Where(z => z.SocialNumber == number).Select(x => x.FirstName).FirstOrDefault();
使用 FirstorDefault()
方法将 return 序列的第一个元素或默认值(如果元素不存在)。
我有两个独立的 classes。登录和用户内容。我希望如果你输入你的个人号码,你应该“登录”。然后你应该可以得到数据了。
我将数字传递给 BankContent 方法。在那里我想从用户那里得到名字,但是当我写的时候我只把这条消息发送到控制台。 Welcome! Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[System.String]
所以我没有得到用户的名字。有谁知道为什么?
登录class
public class Login : ILogin
{
private readonly UserContent _userContent;
private readonly ApplicationDbContext _db;
public Login(UserContent userContent, ApplicationDbContext db)
{
_userContent = userContent;
_db = db;
}
public void Enter()
{
Console.WriteLine("Enter your Social Number to login");
var number = Convert.ToInt32(Console.ReadLine());
var result = _db.Customers.Where(x => x.SocialNumber == number).Any();
if (_db == null)
{
Console.WriteLine($"No customer with {number} was found");
return;
}
if (result == true)
{
_userContent.BankContent(number);
}
else
{
Console.WriteLine($"No customer with {number} was found!");
}
}
}
使用 BankContent 方法的 UserContent
public class UserContent : IUserContent
{
private readonly ApplicationDbContext _db;
public UserContent(ApplicationDbContext db)
{
_db = db;
}
public void BankContent(int number)
{
var name = _db.Customers.Where(z => z.SocialNumber == number).Select(x => x.FirstName);
Console.WriteLine("Welcome! " + name);
}
}
Select()
方法在源 IEnumerable<T>
序列的每个元素上调用提供的选择器委托,并且 return 一个新结果 IEnumerable<U>
序列包含每个元素的输出调用。
所以在你的情况下:
var name = _db.Customers.Where(z => z.SocialNumber == number).Select(x => x.FirstName).FirstOrDefault();
使用 FirstorDefault()
方法将 return 序列的第一个元素或默认值(如果元素不存在)。