双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

为什么改用泛型查询找不到实例?

flyingdream123 flyingdream123 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
想让用户自定义别名。建了一个别名表(表名,字段名,别名),当用户查询实例列表后,然后找到这个表所对应的别名数据,分别填充到查询实例对应的实例的别名。不知还有没有更好的方法?

public class BusinessContainOfPaymentDal
{
/// <summary>
/// 获得数据列表(比DataSet效率高,推荐使用)
/// </summary>
public List<BusinessContainOfPaymentInfo> GetModelList(string strWhere)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select * ");
strSql.Append(" FROM View_业务对应的支付方式 ");
if (strWhere.Trim() != "")
{
strSql.Append(" where " + strWhere);
}
strSql.Append(" ORDER BY 序号");
List<BusinessContainOfPaymentInfo> list = new List<BusinessContainOfPaymentInfo>();
Database db = DatabaseFactory.CreateDatabase();
using (IDataReader dataReader = db.ExecuteReader(CommandType.Text, strSql.ToString()))
{
while (dataReader.Read())
{
list.Add(ReaderBind(dataReader));
}
}
AssignValueToAlias(list, "SY支付方式");

//AssignValueToAlias<BusinessContainOfPaymentInfo>(list, "SY支付方式","名称");
return list;
}
/// <summary>
/// 指定值给别名
/// </summary>
/// <param name="?"></param>
public void AssignValueToAlias<T>(List<T> list, string tableName, string name)
{
AnotherNameDal dal = new AnotherNameDal();
List<BeautySalon.Model.AnotherNameInfo> _AnotherNameInfoList = dal.GetModelList(tableName);
foreach (T model in list)
{
PropertyInfo propertyInfo = model.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
//查询找不到值?
IEnumerable<AnotherNameInfo> anotherNameInfo =
from model2 in _AnotherNameInfoList
where model2.表名 == tableName && model2.字段名 == Convert.ToString(propertyInfo.GetValue(model, null))
select model2;

propertyInfo = model.GetType().GetProperty("别名", BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
foreach (AnotherNameInfo customer in anotherNameInfo)
{
propertyInfo.SetValue(model, customer.别名, null);
}
}
}

/// <summary>
/// 指定值给别名。这个方法是可以使用的
/// </summary>
/// <param name="?"></param>
public void AssignValueToAlias(List<BusinessContainOfPaymentInfo> list, string tableName)
{
AnotherNameDal dal = new AnotherNameDal();
List<BeautySalon.Model.AnotherNameInfo> _AnotherNameInfoList = dal.GetModelList(tableName);
foreach (BusinessContainOfPaymentInfo model in list)
{

IEnumerable<AnotherNameInfo> anotherNameInfo =
from model2 in _AnotherNameInfoList
where model2.表名 == tableName && model2.字段名 == model.名称
select model2;

foreach (AnotherNameInfo customer in anotherNameInfo)
{
model.别名 = customer.别名;
}
}
}

/// <summary>
/// 对象实体绑定数据
/// </summary>
private BusinessContainOfPaymentInfo ReaderBind(IDataReader dataReader)
{
BusinessContainOfPaymentInfo model = new BusinessContainOfPaymentInfo();
object ojb;
ojb = dataReader["业务编号"];
if (ojb != null && ojb != DBNull.Value)
{
model.业务编号 = (BusinessTypes)Enum.Parse(typeof(BusinessTypes), ojb.ToString());
}
model.业务名称 = dataReader["业务名称"].ToString();
model.支付方式编号 = dataReader["支付方式编号"].ToString();
model.名称 = dataReader["名称"].ToString();
ojb = dataReader["启用"];
if (ojb != null && ojb != DBNull.Value)
{
model.启用 =Convert.ToBoolean(ojb);
}
ojb = dataReader["现金业绩"];
if (ojb != null && ojb != DBNull.Value)
{
model.现金业绩 = Convert.ToBoolean(ojb);
}
ojb = dataReader["消耗业绩"];
if (ojb != null && ojb != DBNull.Value)
{
model.消耗业绩 =Convert.ToBoolean(ojb);
}
ojb = dataReader["系统默认"];
if (ojb != null && ojb != DBNull.Value)
{
model.系统默认 =Convert.ToBoolean(ojb);
}
ojb = dataReader["序号"];
if (ojb != null && ojb != DBNull.Value)
{
model.序号 =Convert.ToInt32(ojb);
}
model.备注 = dataReader["备注"].ToString();
ojb = dataReader["业务对应的支付方式Id"];
if (ojb != null && ojb != DBNull.Value)
{
model.业务对应的支付方式Id = new Guid(ojb.ToString());
}
return model;
}

}
...全文
评论 6
收藏 已收藏
分享
返回顶部
flyingdream123
C# 111,129 成员 642,540 内容