Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ中的where子句到实体数据绑定_C#_Linq - Fatal编程技术网

C# LINQ中的where子句到实体数据绑定

C# LINQ中的where子句到实体数据绑定,c#,linq,C#,Linq,我试图向现有的LINQ数据绑定添加where子句,但我所做的一切都不起作用。我要添加的where子句检查refAuthSigner表中的列IsActive==1 以下是我现有的查询: // populates Authorized Signer dropdownlist using (dbPSREntities10 myEntities = new dbPSREntities10()) { var allSigners = from ref

我试图向现有的LINQ数据绑定添加where子句,但我所做的一切都不起作用。我要添加的where子句检查refAuthSigner表中的列IsActive==1

以下是我现有的查询:

// populates Authorized Signer dropdownlist
        using (dbPSREntities10 myEntities = new dbPSREntities10())
        {
            var allSigners = from refAuthSigner in myEntities.refAuthSigners <--- where clause somewhere around here??
                             select new
                             {
                                 refAuthSignerID = refAuthSigner.refAuthSignerID,
                                 refAuthSignerName = refAuthSigner.refAuthSignerFirst + " " + refAuthSigner.refAuthSignerLast
                             };
            ddlAuthSigners.DataSource = allSigners;
            ddlAuthSigners.DataValueField = "refAuthSignerID";
            ddlAuthSigners.DataTextField = "refAuthSignerName";
            ddlAuthSigners.DataBind();
        }
这段代码不正确,只是想知道如何将where子句合并到代码中。谢谢

试试这个:

var allSigners = from refAuthSigner in myEntities.refAuthSigners
                 where refAuthSigner.IsActive
                 select new
                 {
                     refAuthSignerID = refAuthSigner.refAuthSignerID,
                     refAuthSignerName = refAuthSigner.refAuthSignerFirst + " " + refAuthSigner.refAuthSignerLast
                 };
只需使用:

where refAuthSigner.IsActive
因为它是一个布尔值,所以不能将其与整数进行比较。它是
true
false
,而不是
1
0
。(有些语言将两者混为一谈,C#不是其中之一。)


无需将
IsActive
与任何东西进行比较
其中
需要一个布尔值,
IsActive
是一个布尔值。你已经有了你所需要的东西。

你可以说:

var allsigners = refAuthSigner.Where(x => x.refAuthSigner.IsActive) 

“==”的
运算符不能应用于“bool”和“int”类型的操作数。IsActive是SqlServer中的类型位


如果这是您遇到的错误,请尝试使用
Any
而不是
Where
,因为它返回bool

,当您添加
Where
子句时,您会遇到什么问题?“==”运算符不能应用于“bool”和“int”类型的操作数。IsActive是SQLSERVER中的bit类型。请编辑问题以包含该信息。这样他就不会过滤结果,这是他想要的,他只会得到一个布尔值,这不是他想要的。
where refAuthSigner.IsActive
var allsigners = refAuthSigner.Where(x => x.refAuthSigner.IsActive)