Tag: foreach

在具有多个记录的Linq查询之后,foreach循环仅返回第一条记录

我有一个针对第三方提供的数据库运行的Linq2SQL查询。 查询的主要部分如下所示: var valuationQuery = from v in context.Valuations where v.ModelId == QualifiedModelId.ModelId && v.QualifyModelId == QualifiedModelId.Qualifier && v.LanguageCode == QualifiedModelId.LanguageCode && v.Edition == Data.Meta.Edition.CurrentEdition.Date && v.RegDate == yearReg.RegistrationDate && v.ValTypeDescription == “Normal” && v.MileageBandID == MileageBand 当我用foreach循环环绕它时,它会工作或失败,具体取决于最后的选择。 当select指定所有这样的字段时…… select new { v.Value1, v.Value2, v.Value3, … snip … v.Value14, v.Value15, v.ValueTypeID }; ……它正常工作。 当我执行以下操作时,循环会迭代正确的次数,但每次都会返回第一条记录: select […]

是否有可能用Linq替换这个foreach循环?

我有一个foreach循环,我想用Linq查询替换,但我无法弄清楚如何编写查询。 请参阅下面的示例和TIA。 using System.Collections.Generic; using System.Linq; namespace ConsoleApplication { class ExampleProgram { static void Main( string[] args ) { Device device = new Device(); // The goal is to populate this list. var list1 = new List(); // I would like to replace this loop with a Linq query foreach( MemoryBank memoryBank in device.MemoryBanks ) […]

将嵌套的foreach循环转换为LINQ

我编写了以下代码来设置各种类的属性。 它可行,但我的新一年的解决方案之一是尽可能多地使用LINQ,显然这段代码没有。 有没有办法以“纯LINQ”格式重写它,最好不使用foreach循环? (如果可以在单个LINQ语句中完成,则更好 – 子语句很好。) 我试着玩join但这并没有把我带到任何地方,因此我要求回答这个问题 – 最好没有解释,因为我更喜欢“反编译”解决方案以弄清楚它是如何工作的。 (正如你可能猜到的那样,我目前在阅读LINQ方面比写它更好,但我打算改变它…) public void PopulateBlueprints(IEnumerable blueprints) { XElement items = GetItems(); // item id => name mappings var itemsDictionary = ( from item in items select new { Id = Convert.ToUInt32(item.Attribute(“id”).Value), Name = item.Attribute(“name”).Value, }).Distinct().ToDictionary(pair => pair.Id, pair => pair.Name); foreach (var blueprint in blueprints) { foreach […]

使用foreach循环和XmlNodeList C#将新节点附加到节点列表

目前我正在处理这是XML的类型: XML FILE 参考XML文件,我想检查节点,如果找不到节点,我必须将节点附加到文件。 我试过以下代码: private void button12_Click(object sender, EventArgs e) { // XmlNodeList func_name_value = doc.GetElementsByTagName(“FUNCTION-NAME-VALUE”); XmlNodeList list_def_ref = doc.GetElementsByTagName(“DEFINITION-REF”); foreach (XmlNode nodeDef in list_def_ref) { if (nodeDef.InnerText == “/AUTOSAR/Com/ComConfig/ComSignal”) { if (nodeDef.ParentNode.HasChildNodes) { XmlNodeList list = nodeDef.ParentNode.ChildNodes; foreach (XmlNode node in list) { if (node.Name == “PARAMETER-VALUES”) { XmlNodeList param_list = node.ChildNodes; foreach […]

foreach中匿名委托的问题

public Form1() { InitializeComponent(); Collection tests = new Collection(); tests.Add(new Test(“test1”)); tests.Add(new Test(“test2”)); foreach (Test test in tests) { Button button = new Button(); button.Text = test.name; button.Click+=new EventHandler((object obj, EventArgs arg)=>{ this.CreateTest(test); }); this.flowLayoutPanel1.Controls.Add(button); } } public void CreateTest(Test test) { MessageBox.Show(test.name); } } 当我点击按钮女巫文本是’test1’时,消息框将显示’test2’,但我的期望是’test1’。 那么,有人请告诉我代码的原因或错误。

为什么foreach在从ListView中删除项目时起作用而在ListBox中不起作用?

我开始学习C#,我对我发现的行为感到有点困惑。 我试着弄清楚,为什么在一种情况下代码工作而在另一种情况下不工作: foreach (ListViewItem l in listView1.SelectedItems) l.Remove(); foreach (object l in listBox1.SelectedItems) listBox1.Items.Remove(l); 第一个工作正常,没有错误,但第二个抛出exception与集合被更改的信息。 有人能解释一下吗? PS。 在ListView的情况下,我正在调试代码和集合SelectedItems正在改变,但即使它运作良好。

C#中的通用foreach循环

给定以下代码,编译器告诉我“使用未分配的局部变量’x’。” 有什么想法吗? public delegate Y Function(X x); public class Map { private Function F; public Map(Function f) { F = f; } public Collection Over(Collection xs){ List ys = new List(); foreach (X x in xs) { X x2 = x;//ys.Add(F(x)); } return ys; } }

C#,For循环和速度测试……第二次完全相同的循环更快?

public Int64 ReturnDifferenceA() { User[] arrayList; Int64 firstTicks; IList userList; Int64 secondTicks; System.Diagnostics.Stopwatch watch; userList = Enumerable .Range(0, 1000) .Select(currentItem => new User()).ToList(); arrayList = userList.ToArray(); watch = new Stopwatch(); watch.Start(); for (Int32 loopCounter = 0; loopCounter < arrayList.Count(); loopCounter++) { DoThings(arrayList[loopCounter]); } watch.Stop(); firstTicks = watch.ElapsedTicks; watch.Reset(); watch.Start(); for (Int32 loopCounter = 0; loopCounter […]

C#嵌套的foreach循环优化

我有一个嵌套的foreach循环,我真的需要减少计算时间。 每个集合大约有50个成员,因此推断是巨大的。 我查看了很多关于SelectMany的信息,但我仍然不完全确定如何使用它,或者它是否是正确的解决方案。 List StringList; //Populated in previous code Type[] assemblyTypes = RandomAssembly.GetTypes(); foreach (String name in StringList) { foreach (Type at in assemblyTypes) { if (name == at.Name) { //Do stuff. } } } 提前致谢!

在foreach循环内手动增加枚举数

我在foreach循环中有一个嵌套的while循环,我希望在满足某个条件时无限期地推进枚举器。 为此,我尝试将枚举器转换为IEnumerator (如果它在foreach循环中必须是这样)然后在已转换对象上调用MoveNext(),但它给出了一个错误,说我无法转换它。 无法通过引用转换,装箱转换,取消装箱转换,包装转换或空类型转换将类型“System.DateTime”转换为System.Collections.Generic.IEnumerator。 foreach (DateTime time in times) { while (condition) { // perform action // move to next item (time as IEnumerator).MoveNext(); // will not let me do this } // code to execute after while condition is met } 在foreach循环中手动增加IEnumerator的最佳方法是什么? 编辑:编辑显示有一个条件满足后我想要执行的w​​hile循环之后的代码这就是为什么我想在内部手动递增然后突破它而不是继续这会让我回到顶部。 如果这是不可能的,我相信最好的事情就是重新设计我是如何做到的。