SqlParameter数组到对象

时间:2014-03-19 12:19:13

标签: c# arrays

SqlParameter[] _parameters = {                
     new SqlParameter( "@IDNumber", Person.IDNumber ),
     new SqlParameter( "@Name", Person.Name ),
     new SqlParameter( "@Surname", Person.Surname )
};

如何获得"名称"来自对象数组的值而不使用索引?我想做的是,

oPerson.Name = _parameters.Find(@Name).Value;

4 个答案:

答案 0 :(得分:3)

使用以下内容:

_parameters.Single(p => p.ParameterName == "@Name").Value;

这假设存在一个且只有SqlParameter具有给定ParameterName的实例。如果您不确定是否存在,请执行以下操作:

var param = _parameters.SingleOrDefault(p => p.ParameterName == "@Name");
if (param != null) { oPerson.Name = param.Value; }

答案 1 :(得分:3)

使用Linq,很容易

string pName = "@Name";
var p = _parameters.FirstOrDefault(x => x.ParameterName == pName);
if(p != null) 
    oPerson.Name = p.Value.ToString();

我认为您需要此代码,因为您不确定参数是否存在。因此,如果您的参数不存在于集合

中,那么使用FirstOrDefault可以测试结果而不直接使用Value属性

答案 2 :(得分:2)

您可以使用First方法,并通过Name获取参数。

oPerson.Name = _parameters.First(x => x.ParameterName == "@Name").Value;

答案 3 :(得分:2)

您可以像

一样使用Linq
oPerson.Name = _parameters.First( param => param.ParameterName.Equals("@Name")).Value;

再次搜索"@Name"的值。