C# 在using语句中包装dataview会产生奇怪的结果。我是不是误用了这个词?

C# 在using语句中包装dataview会产生奇怪的结果。我是不是误用了这个词?,c#,dataview,using-statement,C#,Dataview,Using Statement,这个问题今天真让我恼火。我在Visual studio 2012 C#net 4应用程序中工作(不确定这是否重要) 我有一些数据表,其中包含多个结果。为了找出最好的选择,我正在寻找Jaro Winkler得分最好的,并将其发回。 我通过创建一个dataview对表结果进行排序,为了正确处理数据元素,我将dataview包装在一个using语句中。代码如下所示: public static DataRow getBestCandidate(DataTable searchTable, strin

这个问题今天真让我恼火。我在Visual studio 2012 C#net 4应用程序中工作(不确定这是否重要)

我有一些数据表,其中包含多个结果。为了找出最好的选择,我正在寻找Jaro Winkler得分最好的,并将其发回。
我通过创建一个dataview对表结果进行排序,为了正确处理数据元素,我将dataview包装在一个using语句中。代码如下所示:

 public static DataRow getBestCandidate(DataTable searchTable, string searchName)
        {
            if (searchTable.Rows.Count == 1) //Nothing to do if there's only one row
            {
                return searchTable.Rows[0];
            }        

           int tableSize = searchTable.Rows.Count;
                for (int i = 0; i < tableSize; i++)
                {
                        //Iterate through each entry and record the Jaro distance between our original search term.
                        searchTable.Rows[i][7] = jaro.getScrubbedDistance(searchTable.Rows[i][1].ToString(), searchName);
                }

                using (DataView dv = searchTable.DefaultView) //Sort the results
                {
                    dv.Sort = "JaroDistance desc";                 
                    return dv[0].Row; //Send back the result with the highest Jaro score.
                }          
        }
那么它就可以正常工作了。敲打这些方法似乎不会导致巨大的内存峰值


甚至需要使用包装器吗?为什么在我返回它之前它会变为空?

假设
搜索表
是同一个实例,您将处理它的
默认视图
,这是您每次调用该方法时共享的对象

这里不需要
使用
,而是在管理该对象的任何父方法中围绕
搜索表

 DataView dv = searchTable.DefaultView;
                    dv.Sort = "JaroDistance desc";

                    return dv[0].Row;