按多个值过滤通用列表

时间:2014-10-27 17:22:28

标签: c# asp.net linq

有一个通用的文档列表,如何按文档ID 1和2过滤它。

我试过跟随Linq,但它无法正常工作。我需要过滤列表并将其用作数据源。

List<VisitDocs> listD = default(List<VisitDocs>);
result = from docs in listDwhere docs.DocID == 1 && docs.DocID == 2docs;

rptDocs.DataSource = listD;

4 个答案:

答案 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可以是12,但不能同时为&&。您当前的状况是使用1,这意味着它必须同时为2DataSource

分配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逻辑运算符。