在我们浏览网页的时候我们看到网页上的表格的时候在一格里面显示了两条以上的数据,而且每条结束的时候都会用一个符号来隔开
实现这样显示是我们在C#代码中把获取到数据库中的数据然后进行了字符串拼接,在每条数据后面都添加上了一个“,”当每一条的数据结尾添加后在页面上输出的数据就是上图的样子了。
如果我们不使用字符串拼接得出来会有很多重复的数据,属性那一列有多少数据在页面上就重复多少次
而当我们使用了字符串拼接在页面上就会只显示一条,因为我们在C#代码那边进行了foreach循环,循环商品的属性,如果商品ID相同则一直循环下去直到商品ID不一样为止
首先我们声明一个变量,这个变量在foreach后进行字段添加,在第一个foreach里面声明一个ValueName的变量,让它在每一次循环完第二个foreach后循环一遍,让它里面存的数据清空一遍在进行第二次循环,第二个foreach则是循环属性里面的属性值,里面的if循环是判断商品里的商品ID和属性里的商品ID是否是同一个,如果为同一个则一直循环直到ID不一样为止,当所有的循环都完毕后ValueName这个变量里面已经有了我们想要得到的数据,因为我们使用了“,”来隔开每条数据,所以在添加数据的时候我们需要使用Substring来检索字符串,检索第一个字符串然后给它去掉,我们最后得到的结果就是
最后一步我们则将这条数据添加到商品里面显示属性那一列,实现这个字符串拼接所使用的了C#代码如下
List<CommodityInfor> listCommodity = (from tbCommodity in myModel.D_Commodity
join tbUnit in myModel.D_Unit on tbCommodity.UnitID equals tbUnit.UnitID
join tbStockPrice in myModel.D_StockPrice on tbCommodity.StockPriceID equals tbStockPrice.StockPriceID
join tbClassification in myModel.D_Classification on tbCommodity.ClassificationID equals tbClassification.ClassificationID
select new CommodityInfor
{
ClassificationID = tbClassification.ClassificationID,
CommodityID = tbCommodity.CommodityID,
CommodityName = tbCommodity.CommodityName,
UnitName = tbUnit.UnitName,
StockPrice = tbStockPrice.StockPrice
}).ToList();
List<CommodityInfor> listAttr = (from tbAttrValue in myModel.D_AttrValue
join tbAttr in myModel.D_Attr on tbAttrValue.AttrID equals tbAttr.AttrID
join tbCommodityAttrDetail in myModel.R_CommodityAttrDetail on tbAttrValue.AttrValueID equals tbCommodityAttrDetail.AttrValueID
select new CommodityInfor
{
CommodityID = tbCommodityAttrDetail.CommodityID,
AttrDetailID = tbCommodityAttrDetail.AttrDetailID,
AttrName = tbAttr.AttrName,
AttrValueName = tbAttrValue.AttrValueName
}).ToList();
List<CommodityInfor> List = new List<CommodityInfor>();
foreach (var Commodity in listCommodity)
{
var ValueName = "";
foreach (var Attr in listAttr)
{
if (Commodity.CommodityID == Attr.CommodityID)
{
ValueName += ("," + Attr.AttrValueName);
}
}
Commodity.AttrValueName = ValueName.Substring(1);
List.Add(Commodity);
}