0

我使用以下方法将文件的内容读入数据表:

public static DataTable GetFileContents(string filePath, IEnumerable<string> columnNames)
        {
            using (var conn = new StreamReader(filePath,Encoding.Unicode))
            {
                string strLine;
                var dt = new DataTable();
                var columnCount = 0;
                const char delimiter = '\t';
                foreach (var columnName in columnNames)
                {
                    dt.Columns.Add(columnName, typeof(string));
                    columnCount++;
                }
                while ((strLine = conn.ReadLine()) != null)
                {
                    var columnData = strLine.Split(delimiter);
                    var j = 0;
                    var columns = new string[columnCount];
                    while (j < columnCount)
                    {
                        columns[j] = columnData[j];
                        j++;
                    }
                    dt.Rows.Add(columns);
                }
                return dt;
            }
        }

然后我将表的内容检索到一个列表中,然后将列表中的值与数据表中的值进行比较,主要比较如下:

dataTable.AsEnumerable().Single(x=>x.ItemArray[0].ToString().Equals(tableRow[0].ToString()))

我什至尝试过以下方法:

dataTable.AsEnumerable().Single(
                                x => Encoding.Unicode.GetBytes(x.ItemArray[0].ToString()).SequenceEqual(Encoding.Unicode.GetBytes(tableRow[0].ToString())));

虽然我看到值完全匹配,但上面的 Linq 查询仍然失败,没有找到结果。知道是什么原因吗?

该文件采用 Unicode 格式。

示例代码:

var tableList = session.CreateSQLQuery(sqlString).List<object>();
foreach (var row in tableList)
{
var tableRow= (IList)row;
//my comparison code as mentioned above
//other code
}

从文件中检索到的值为 1233 的字节数组: 来自文件的 1233 字节数组

来自 db 的 1233 字节数组: 来自 db 的 1233 字节数组

4

0 回答 0