C# Linq-to-SQL 多列
C# Linq-to-SQL multiple columns
我目前正尝试在 C# 中使用 Linq-to-SQL select 多列。当像 this one 一样查看其他线程时,这是一件非常简单的事情,所以我尝试了:
var users = context.GetTable<DbHelper.User>();
var query = from u in users
where u.Email == TbUsername.Text
select new { u.Active, u.Password };
if(!query.Any())
{
MessageBox.Show("Could not find an account with that Email");
return;
}
var result = query.First(); // Error occurs here
DbHelper
中的用户 table:
[Table(Name="Users")]
public class User
{
[Column(IsPrimaryKey = true, AutoSync = AutoSync.OnInsert, IsDbGenerated = true)]
public int Id { get; set; }
[Column]
public int RoleID { get; set; }
[Column]
public string Email { get; set; }
[Column]
public string Password { get; set; }
[Column]
public string Firstname { get; set; }
[Column]
public string Lastname { get; set; }
[Column]
public int OfficeID { get; set; }
[Column]
public string Birthdate { get; set; }
[Column]
public int Active { get; set; }
}
table 在 SQL 服务器中看起来像这样:
[ID] INT IDENTITY (1, 1) NOT NULL,
[RoleID] INT NOT NULL,
[Email] NVARCHAR(150) NOT NULL,
[Password] NVARCHAR(50) NOT NULL,
[FirstName] NVARCHAR(50) NULL,
[LastName] NVARCHAR(50) NOT NULL,
[OfficeID] INT NULL,
[Birthdate] DATE NULL,
[Active] BIT NULL,
导致错误
System.InvalidCastException: The conversion is invalid
我的代码有什么问题?这真的很令人困惑,因为它似乎对其他人有用。如果您需要更多代码,请告诉我
尝试使用.FirstOrDefault()
:
var result = query.FirstOrDefault();
如果在此调用后 result
为空,则您的选择 return 数据库 table.
中没有任何行
由于数据库 table 中活动列的类型是 'bit',EF 需要 属性 类型 'bool'。
0==false,1==true,如您所料。
我目前正尝试在 C# 中使用 Linq-to-SQL select 多列。当像 this one 一样查看其他线程时,这是一件非常简单的事情,所以我尝试了:
var users = context.GetTable<DbHelper.User>();
var query = from u in users
where u.Email == TbUsername.Text
select new { u.Active, u.Password };
if(!query.Any())
{
MessageBox.Show("Could not find an account with that Email");
return;
}
var result = query.First(); // Error occurs here
DbHelper
中的用户 table:
[Table(Name="Users")]
public class User
{
[Column(IsPrimaryKey = true, AutoSync = AutoSync.OnInsert, IsDbGenerated = true)]
public int Id { get; set; }
[Column]
public int RoleID { get; set; }
[Column]
public string Email { get; set; }
[Column]
public string Password { get; set; }
[Column]
public string Firstname { get; set; }
[Column]
public string Lastname { get; set; }
[Column]
public int OfficeID { get; set; }
[Column]
public string Birthdate { get; set; }
[Column]
public int Active { get; set; }
}
table 在 SQL 服务器中看起来像这样:
[ID] INT IDENTITY (1, 1) NOT NULL,
[RoleID] INT NOT NULL,
[Email] NVARCHAR(150) NOT NULL,
[Password] NVARCHAR(50) NOT NULL,
[FirstName] NVARCHAR(50) NULL,
[LastName] NVARCHAR(50) NOT NULL,
[OfficeID] INT NULL,
[Birthdate] DATE NULL,
[Active] BIT NULL,
导致错误
System.InvalidCastException: The conversion is invalid
我的代码有什么问题?这真的很令人困惑,因为它似乎对其他人有用。如果您需要更多代码,请告诉我
尝试使用.FirstOrDefault()
:
var result = query.FirstOrDefault();
如果在此调用后 result
为空,则您的选择 return 数据库 table.
由于数据库 table 中活动列的类型是 'bit',EF 需要 属性 类型 'bool'。 0==false,1==true,如您所料。