首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数据库读取数据,然后在C#中对某些条件下的数据进行过滤

从数据库读取数据,然后在C#中对某些条件下的数据进行过滤
EN

Stack Overflow用户
提问于 2017-07-02 19:45:38
回答 1查看 2.6K关注 0票数 0

我的问题是,在代码背后(使用查询)从Server获取数据,然后对代码背后的一些参数(C#)进行过滤,最好的方法是什么?

就像我必须使用动态查询从Server获取数据一样- TableName应该按输入传递

代码语言:javascript
运行
复制
Select * From [TableName]

然后我想对结果应用过滤,比如应用有效的日期过滤,isActive或者其他什么。

代码语言:javascript
运行
复制
string SqlString = "SELECT * FROM TableName;";
SqlDataAdapter sda = new SqlDataAdapter(SqlString, Conn);
DataTable dt = new DataTable();
try
{
    Conn.Open();
    sda.Fill(dt);
}
catch (SqlException se)
{
    DBErLog.DbServLog(se, se.ToString());
}
finally
{
    Conn.Close();
}

否则我会用

代码语言:javascript
运行
复制
DataSet ds = new DatSet()
sda.Fill(ds)

如果我们不知道表列(生效日期或IsActive列除外),如何迭代结果集(DataTable/DataSet)和筛选记录

然后创建对象并将对象转换为XML格式。

非常感谢你的帮助。提前谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2017-07-02 21:29:22

正如@Steve在他的评论中提到的那样,一个好的实践是尽可能多地在SQL查询中进行过滤。

使用T-sql条件(WHEREGROUP BYHAVING等)过滤和操作数据有多种方法。与您可以在应用程序中执行的操作相比,SQL server非常有效。

下面是关于这个主题的有趣的讨论:“永远不要在代码中做你能让SQL服务器为您做得更好的事情”--这是一个错误设计的处方吗?

另一方面,在一些特殊情况下,使用sql steatments将导致资源的损失和不必要的。例如,高频GUI更改和更新,当遇到这样的情况时,针对sql server的多个查询可能会浪费资源,在这种情况下,一种处理方法是使用林克Lambda表达式、二进制搜索等从程序中缓存的datatable或其他对象中提取数据.

需要注意的是,作为一名程序员,您应该掌握和理解操作数据的最有效方法.

请参阅我在您的代码中的评论/建议:

代码语言:javascript
运行
复制
private void foo()
{
    // add a much conditions as you can inside the query
    // for example "SELECT * FROM TableName WHERE Col2 IS NOT NULL AND col2 LIKE '%jr%' AND col3 > 3 AND YEAR(col4) = 2017"...
    string SqlString = "SELECT * FROM TableName";
    SqlDataAdapter sda = new SqlDataAdapter(SqlString, Conn);
    DataTable dt = new DataTable();
    try
    {
        Conn.Open();
        sda.Fill(dt);
        // you can add more conditions, filterring, sorting, grouping using LINQ or Lambda Expretions
        // for example create new datatable based on condition
        DataTable newDt = dt.AsEnumerable().Where(x => x.Field<int>("col3") > 3).Select(y => y).CopyToDataTable();

        // use WriteToXml() method and save as xml file
        string FilePath = @"C:\YOUR_FILE_PATH.xml";
        // give name to the datatable, WriteToXml() can not create xml with null table name
        newDt.TableName = "myTableName";
        // save
        newDt.WriteXml(FilePath);

    }
    catch (SqlException se)
    {
        DBErLog.DbServLog(se, se.ToString());
    }
    finally
    {
        Conn.Close();
    }
}
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44874599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档