如果/ Else在Inline Synatx中声明具有属性C#的类对象
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如果/ Else在Inline Synatx中声明具有属性C#的类对象,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2124字,纯文字阅读大概需要4分钟。
内容图文
![如果/ Else在Inline Synatx中声明具有属性C#的类对象](/upload/InfoBanner/zyjiaocheng/822/333562cc1a4b491c925f1a90f0b9f04e.jpg)
我需要根据列值动态添加属性值.目前我正在创建对象如下:
while (rd.Read())
{
list.Add(new DeviceModelInfo()
{
ID = rd.GetGuid("ID"),
Manufacturer = new Manufacturer()
{
ID = rd.GetGuid("ManufacturerID"),
Name = rd.GetString("ManufacturerName"),
ManufacturerType (ManufacturerEnum)rd.GetInt32("ManufecturerType")
},
Model = rd.GetString("Model"),
IMEI = rd.GetString("IMEI")
});
}
但是我需要在DataReader中检查IMEI列是否可用,但是当我使用if else然后它给出语法错误我想添加IMEI如果它在DataReader中可用,我该如何实现呢?
if (rd.GetName(i).Equals("IMEI", StringComparison.InvariantCultureIgnoreCase))
IMEI = rd.GetString("IMEI")
解决方法:
我假设我已经是一个变量某个地方,如果它可用,它的列号将是IMEI.如果情况并非如此,请参阅答案的结尾.
您不能在对象初始值设定项中使用if语句.您可以做的是将其分成单独的声明:
while (rd.Read())
{
var device = new DeviceModlInfo
{
ID = rd.GetGuid("ID"),
Manufacturer = new Manufacturer()
{
ID = rd.GetGuid("ManufacturerID"),
Name = rd.GetString("ManufacturerName"),
ManufacturerType (ManufacturerEnum)rd.GetInt32("ManufecturerType")
},
Model = rd.GetString("Model");
};
if (rd.GetName(i).Equals("IMEI", StringComparison.InvariantCultureIgnoreCase))
{
device.IMEI = rd.GetString("IMEI");
}
list.Add(device);
}
或者,您可以使用条件?:运算符根据条件为IMEI分配一个值或另一个值:
while (rd.Read())
{
list.Add(new DeviceModelInfo
{
ID = rd.GetGuid("ID"),
Manufacturer = new Manufacturer()
{
ID = rd.GetGuid("ManufacturerID"),
Name = rd.GetString("ManufacturerName"),
ManufacturerType (ManufacturerEnum)rd.GetInt32("ManufecturerType")
},
Model = rd.GetString("Model"),
IMEI = rd.GetName(i).Equals("IMEI", StringComparison.InvariantCultureIgnoreCase))
? rd.GetString("IMEI") : null;
});
}
如果你实际上不知道哪个列是IMEI,我可能会写一个单独的方法来检查列是否存在,只需要一次.然后你写(在循环之外):
int? imeiColumn = GetColumn(dr, "IMEI");
然后在你的对象初始化器中,写:
IMEI = imeiColumn != null ? dr.GetString(imeiColumn.Value) : null
GetColumn可能看起来像这样:
static int? GetColumn(DbDataReader reader, string name)
{
for (int i = 0; i < reader.VisibleFieldCount; i++)
{
if (reader.GetName(i).Equals(name, StringComparison.InvariantCultureIgnoreCase))
{
return i;
}
}
return null;
}
内容总结
以上是互联网集市为您收集整理的如果/ Else在Inline Synatx中声明具有属性C#的类对象全部内容,希望文章能够帮你解决如果/ Else在Inline Synatx中声明具有属性C#的类对象所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。