繁体   English   中英

如何更改此 LINQ 查询以使用我的列表<int>而不是硬编码?

[英]How can i change this LINQ query to use my List<int> instead of the hard coded number?

我终于让我的 LINQ 来查询数据表,并使用硬编码值,我得到了一个包含这些记录的新数据表。 但是我需要帮助来更新此代码以使用我的 List returnClass() 作为 where 子句中的变量。

var query = from r in d.AsEnumerable()
            where r.Field<string>("Column7") == "672"
            select r;

DataTable output = query.CopyToDataTable<DataRow>();
foreach (DataRow row in output.Rows)
{
    output.ImportRow(row);
}

我想用我拥有的包含 94 个值的列表替换 ==“672”,我想从数据表中排除这些值。 这是我的原始帖子,它使我到达了现在的位置,但现在我只需要有关 LINQ 查询的帮助以使用我的列表并以排除在我的列表中具有值的任何记录的方式编写。 我正在尝试使用该列表将我的 34k 记录过滤到 29k。

我尝试过但不起作用的另一个例子

            var query = from r in d.AsEnumerable()
                    where !r.Field<string>("Column7").Contains(Convert.ToString(returnClass()))
                    select r;

        DataTable output = query.CopyToDataTable<DataRow>();
        foreach (DataRow row in output.Rows)
        {
            output.ImportRow(row);
        }

列表看起来像这样(为了清楚起见被截断)

    private List<int> returnClass()
    {
        List<int> cl = new List<int>();
        cl.Add(75);
        cl.Add(76);
        cl.Add(77);
        cl.Add(78);
        cl.Add(79);
        cl.Add(80);
        cl.Add(81);
        cl.Add(82);
        return cl;
    }

假设myList是一个List<string> ,你可以尝试这样的事情:

var query = from r in d.AsEnumerable()
            where myList.Any(r.Field<string>("Column7").Contains)
            select r;

或者,如果myListList<int> ,您可能希望将 Database 列修改为也具有int类型,您可以执行以下操作:

var query = from r in d.AsEnumerable()
            where myList.Contains(r.Field<int>("Column7"))
            select r;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM