有一个通用的文档列表,如何按文档ID 1和2过滤它。
我试过跟随Linq,但它无法正常工作。我需要过滤列表并将其用作数据源。
List<VisitDocs> listD = default(List<VisitDocs>);
result = from docs in listDwhere docs.DocID == 1 && docs.DocID == 2docs;
rptDocs.DataSource = listD;
答案 0 :(得分:3)
您需要||
:
result = listD.Where(doc=> doc.DocID == 1 || doc.DocID == 2);
或
result = from docs in listD where docs.DocID == 1 || docs.DocID == 2 select docs;
您的DocID
可以是1
或2
,但不能同时为&&
。您当前的状况是使用1
,这意味着它必须同时为2
和DataSource
。
分配ToList
来电rptDocs.DataSource = result.ToList();
,如:
{{1}}
答案 1 :(得分:1)
docs.DocID == 1 && docs.DocID == 2
永远不会成立:如果值为1,则不是2,反之亦然。您需要使用||
(或),而不是&&
(和)
答案 2 :(得分:0)
请改变&amp;&amp;到||并查看它是否有效
答案 3 :(得分:-1)
我认为你试着写这样的东西:
var result = (from docs in listD
where docs.DocID == 1 || docs.DocID == 2
select docs).ToList();
rptDocs.DataSource = result;
其中listD是您的原始列表。请注意,在您的代码示例中,ListD将为空。
如果您希望结果同时包含DocID值1和2,只需替换&#34;&amp;&amp;&#34; by&#34; ||&#34;。使用&#34;&amp;&amp;&#34;这意味着任何单个结果都应该对两个条件都有效,这是不可能的:单个结果将使DocID等于1,或2或其他任何结果。所以,如果你想用1&#34;或&#34; 2,你应该使用OR逻辑运算符。