获取列值

|
    private string FindTaxItemLocation(string taxItemDescription)
    {
        if (!templateDS.Tables.Contains(cityStateTaxesTable.TableName))
            throw new Exception(\"The schema dos not include city state employee/employer taxes table\");
        var cityStateTaxes =
            templateDS.Tables[cityStateTaxesTable.TableName].AsEnumerable().FirstOrDefault(
                x => x.Field<string>(Fields.Description.Name) == taxItemDescription);//[x.Field<string>(Fields.SteStateCodeKey.Name)]);

        if (cityStateTaxes != null)
            return cityStateTaxes[Fields.SteStateCodeKey.Name].ToString();

        return null;
    }
cityStateTaxes是一个DataRow,为什么/如何无法在FirstOrDefault()中获取列值? 谢谢,     
已邀请:
        
FirstOrDefault()
选择集合中的第一个项目(可选地满足谓词),或者在collection为空的情况下返回
null
(或任何不满足谓词的情况)。它不会为您做任何预测。因此,如果使用它,由于必须包含默认值检查,因此访问该项目的字段可能很尴尬。 我的建议是在使用
FirstOrDefault()
之前始终始终投影到所需的字段,这样您就可以直接进行字段检查而无需执行检查。
var cityStateTaxes = templateDS.Tables[cityStateTaxesTable.TableName]
    .AsEnumerable()
    .Where(row => row.Field<string>(Fields.Description.Name) == taxItemDescription) // filter the rows
    .Select(row => row.Field<string>(Fields.SteStateCodeKey.Name)) // project to your field
    .FirstOrDefault(); // you now have your property (or the default value)

return cityStateTaxes;
    

要回复问题请先登录注册