c# List使用中遇到的问题
最近在项目上写的方法,想通过减少访问数据层,将需要重复调用的值存入List,无意中碰到的一个巨坑,至今仍不明所以,在此写出来,一来是看看有没有同道中人,二来是看看有没有大牛能解惑。
逻辑如下:
1、从数据库中获取AList(yycfList)
2、new一个BLis(_yycfList),将AList中的部分值赋予它
3、改变BList中的值
4、AList的值也变了
代码如下:
List<A> AList = GetAList();
List<X> XList = GetXList();
List<Y> YList = GetYList();
foreach (var y in YList)
{
List<A> BList = AList.FindAll(x => x.CustomType == y.CustomType);
if (y.IsPrivate || y.IsSustainable)
{
foreach (var b in BList)
{
X _x = XList.Find(x => x.Curve == b.Curve &&
x.CustomType == b.CustomType &&
x.FixType == (y.IsSustainable ? : ));
if (_x != null)
{ b.AFactor = b.AFactor + _x.DRange / ; //此处修改后直接影响AList的值
b.CFactor = b.CFactor + ((_x.URange - _x.DRange) / / );
}
}
}
}
最终解决代码:
List<A> AList = GetAList();
List<X> XList = GetXList();
List<Y> YList = GetYList();
foreach (var y in YList)
{
List<A> BList = AList.FindAll(x => x.CustomType == y.CustomType); if (y.IsPrivate || y.IsSustainable)
{
BList = new List<A> (); //此处重新New BList
foreach (var b in AList.FindAll(x => x.CustomType == y.CustomType))
{
X _x = XList.Find(x => x.Curve == b.Curve &&
x.CustomType == b.CustomType &&
x.FixType == (y.IsSustainable ? : ));
B _b = new B(); //此处New一个B
if (_x != null)
{
_b.AFactor = b.AFactor + _x.DRange / ;
_b.BFactor = b.BFactor;
_b.CFactor = b.CFactor + ((_x.URange - _x.DRange) / / );
BList.Add(_b); //将改变后的B加入List
}
else
{
BList.Add(b); //无需改变则将旧B加入List
}
}
}
}
c# List使用中遇到的问题的更多相关文章
- ORA-02020 : 过多的数据库链接在使用中-Windows环境解决步骤
一.现象 编译存储过程时报ORA-02020错误. 错误详细信息:ORA-04052在查找远程对象 xx@yy时出错 ORA-00604 : 递归 SQL 级别 1 出现错误 ORA-02020 : ...
- Subsonic使用中
使用中,遇到各种奇葩问题,依依汇总. 1.引用了Subsonic层后,一运行就开始报错,提示未能找到文件!! //引用后,目标框架可能会被改变,subsonic的默认框架是2.0,请检查框架是否 ...
- mysqldump 备份命令使用中的一些经验总结
mysqldump的一个小坑(自测) 正文:经常使用接触mysql复制功能的朋友应该对mysqldump命令不陌生吧,鄙人最近也在研究学习这一块的内容,经过几天的测试,发现mysqldump使用中容易 ...
- <总结>delphi WebBrowser控件的使用中出现的bug
Delphi WebBrowser控件的使用中出现的bug: 1.WebBrowser.Visible=false:Visible属性不能使WebBrowser控件不可见,暂时用 WebBrowse ...
- SSH框架使用中存在的诡异异常
背景 相信大多数人目前都在使用Spring + Struts2/SpringMVC + Hibernate来构建项目的整体架构,但是在使用中经藏会遇到一些诡异的问题,不知道如果解决,今天我遇到了一个非 ...
- VM出现该虚拟机正在使用中的提示,让获取所有权限解决办法
今天打开虚拟机正要学习,结果说是虚拟机似乎正在使用中,让我重新获取权限.解决办法:打开提示的配置文件的位置,将一个以.lck结尾的文件夹删除或者保存为另外的文件名称,再打开虚拟机就OK了.
- cordova + ionic 使用中碰到的一些问题
cordova + ionic 使用中碰到的一些问题 No Content-Security-Policy meta tag found. Please add one when using ...
- VMware“该虚拟机似乎正在使用中”问题
在用VMware虚拟机的时候,有时会发现打开虚拟机时提示“该虚拟机似乎正在使用中.如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权.否则,请按“取消(C)”按钮以防损坏.配置文件: D ...
- 项目使用中Linq使用总结
项目使用中Linq使用总结 本文旨在和网友分享Linq在项目中的实践,曾经我参与过的项目都能看见Linq的影子.(LinqTosql.LinqToString.LinqToXML.LinqToEnti ...
- 我使用中的Linux命令和快捷键(For Ubuntu)
虽然自己工作一直都在MS的平台体系,自然很多的工作都需要在windows上完成,自己的电脑也一直使用windows操作系统,但是笔记本配置不是很好,导致装windows 8后,笔记本卡的难以忍受.想想 ...
随机推荐
- Spring 注解原理(三)@Qualifier @Value
Spring 注解原理(三)@Qualifier @Value Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) 一.Aut ...
- Python之路(第十四篇)os模块
一.os模块 1.os.getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) import os print(os.getcwd()) 2.os.chdir(path) 改变 ...
- PHP 判断字符串括号是否匹配
<?php function aa($str) { $temp = array(); for ($i = 0; $i < strlen($str); $i++) { $t = $str[$ ...
- debian9安装mysql mariadb
debian9下mysql 替换成mariadb-server-10.1 不过两者类似 具体可见 <MySQL和mariadb区别> http://ask.chinaunix.net/qu ...
- 如何用xx-net上youtube
1.下载https://github.com/XX-net/XX-Net/blob/master/code/default/download.md 里面的稳定版本 2.下载chrome.百度chr ...
- 【密码学】轻松理解“加盐”的原理与java实现
转自:https://blog.csdn.net/DavidHuang2017/article/details/80283469 一.什么是加盐? 1.背景 现在很多公司后台以hash值形式存储用户密 ...
- NOIP训练测试2(2017081502)
唔,这是今天第二场训练测试. 上一轮不够难,现在来一波更简单的.[滑稽] 注意时间! 测试时间:3小时 题目一:Cantor表 题目二:回文数 题目三:拼数 题目四:进制位 题目五:邮票面值设计 都是 ...
- 2017年多校get点
杨辉三角形变形??? lucas定理
- normalized
共同点:实现规范化,让一个向量保持相同的方向,但它的长度为1.0,如果这个向量太小而不能被规范化,一个零向量将会被返回. 不同点:Vector3.normalized的作特点是当前向量是不改变的并且返 ...
- 2019.02.07 bzoj4784: [Zjoi2017]仙人掌(仙人掌+树形dp)
传送门 题意:给一个无向连通图,问给它加边形成仙人掌的方案数. 思路: 先考虑给一棵树加边形成仙人掌的方案数. 这个显然可以做树形dp. fif_ifi表示把iii为根的子树加边形成仙人掌的方案数. ...