Articles of linq

使用XDocument遍历节点的所有属性

我有以下存储表定义的xml。 如何使用XDocument(C#3.5)遍历传递的tablename的每一列(每个表只出现一次)及其属性 例如:如果用户通过CurrencySummary,我想读取每个列及其所有属性,如HeaderDescription,HeaderName等。 我试图通过以下方式实现这一目标:(编辑:根据Henk的建议) var doc = XDocument.Load(“TableDefinations.xml”); var cols = doc.Descendants(“CurrencySummary”).First(); foreach (var col in cols.Elements()) { foreach (XAttribute at in col.Attributes()) { //do something with the at.Name and at.Value } } 这是有效的方式还是有什么比这更好的?

使用linq更新对象的性能更佳

我有两个自定义对象列表,如果另一个列表中有一个与另一对字段匹配的对象,则希望更新一个列表中所有对象的字段。 此代码更好地解释了问题,并产生了我想要的结果。 但是对于较大的列表20k和具有匹配对象的20k列表,这需要相当长的时间(31秒)。 通过使用通用列表Find(Predicate)方法,我可以使用~50%来改善这一点。 using System; using System.Linq; using System.Linq.Expressions; using System.Collections.Generic; namespace ExperimentFW3 { public class PropValue { public string Name; public decimal Val; public decimal Total; } public class Adjustment { public string PropName; public decimal AdjVal; } class Program { static List propList; static List adjList; public static void Main() { propList […]

如何使用EF查询中的函数参数化选择器?

我有一个投影函数,我传递给IQueryable.Select()方法: private static Expression<Func> GetPriceSelector(){ return e => new PriceItem { Id = e.Id, Price = Math.Round(e.Price, 4) }; } 一切正常,但我想像这样参数化: private static Expression<Func> GetPriceSelector(Func formula){ return e => new PriceItem { Id = e.Id, Price = formula(e) }; } 所以我可以称之为 prices.Select(GetPriceSelector(e => Math.Round(e.Price, 4))) 不幸的是,EF抱怨它: LINQ to Entities中不支持LINQ表达式节点类型“Invoke” 如何重写代码让EF快乐?

LINQ方法通过函数连接一系列中的每个n个元素,然后将这些结果重新聚合到一个新列表中?

不确定这个问题的标题是否清楚,但是这里有。 我的ASP.NET MVC 3应用程序中有一些相当混乱的代码,当打印出来时,将每2个(但可以从1-n配置)项目包装在div标签的列表中。 我想像这样创建一个LINQ函数: // Can’t think of a better name IEnumerable FormattedSubsetList(IEnumerable items, int every = 2, [delegate to a method to join the N elements]) { } 对不起,如果这有点复杂…我会试一个例子。 假设我有一个Widget列表。 我想打印出我所有小部件的名称(假设我有7个),我希望每2个小部件都在div中。 所以如果我有…… var list = new List(); list.Add(new Widget() { Name = “One” }); //… you get the picture list.Add(new Widget() { Name […]

逐步构建OR查询表达式

在LINQ中,可以逐步构建LINQ查询,如下所示: var context = new AdventureWorksDataContext(); // Step 1 var query = context.Customers.Where(d => d.CustomerType == “Individual”); // Step 2 query = query.Where(d => d.TerritoryID == 3); 上面的查询将产生一个等效的SQL语句,其WHERE子句包含由AND逻辑运算符组合在一起的两个谓词,如下所示: SELECT * FROM Customers WHERE CustomerType = ‘Individual’ AND TerritoryID = 3 是否可以构建LINQ查询以progressively生成等效的SQL语句,以便生成的查询具有WHERE子句,其中谓词由OR逻辑运算符组合在一起,如下所示? SELECT * FROM Customers WHERE CustomerType = ‘Individual’ OR TerritoryID = 3

如何检查修改了哪些属性/条目以及未修改哪些属性/条目在EF 6中编辑记录

我正在使用EF 6开发MVC 5应用程序。编辑的自动生成的POST方法是: public ActionResult Edit([Bind(Include = “Id,Name,Address,Phone,SSNo,D1”)] ABC abc) { if (ModelState.IsValid) { db.Entry(abc).State = EntityState.Modified; db.SaveChanges(); } return View(abc); } 是否有任何过程/方法可以获得哪些条目被修改以及这些条目的原始值是什么。 我已经尝试过在这个问题中标记为答案的方法,但是虽然已经进行了更改,但是它没有得到任何更改,即循环不会迭代。 我的代码是: public ActionResult Edit([Bind(Include = “Id,Name,Address,Phone,SSNo,D1”)] ABC abc) { if (ModelState.IsValid) { db.ABCs.Attach(abc); var myObjectState = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.GetObjectStateEntry(abc); var modifiedProperties = myObjectState.GetModifiedProperties(); foreach (var propName in modifiedProperties) { Console.WriteLine(“Property {0} changed from […]

如何组合Linq表达式在一组实体上调用OrderBy?

有人可以解释构建一个表达式的语法,该表达式将在一个实体上使用OrderBy用户指定的属性吗? 这篇MSDN文章有很长的路要走,但它处理一个简单的字符串列表,我的数据集包含我自己的自定义对象。 http://msdn.microsoft.com/en-us/library/bb882637.aspx

LINQ查询:根据键确定一个列表中的对象是否存在于另一个列表中

基本上我要做的是获取一个对象列表并根据一些标准对其进行过滤,其中一个标准是该键在另一个列表中不存在。 这是一个例子: 我的两个类与此类似: public class Test { public string name; public string instructor_name; public string course; } public class Appointment { public string site; public DateTime forWhen; public string testName; } 我想通过查看课程并确保List 中不存在测试来对List 进行排序。 在SQL中我会这样做: SELECT new Group(c.Key, c) FROM tests in testList WHERE tests.Course != “Science” AND tests.name NOT IN (SELECT testName FROM appotList) […]

在C#中使用OfType过滤类型的对象

我有一个基类Base,以及inheritance自它的A / B类。 public class Base { int x; } public class A : Base { int y; } public class B : Base { int z; } 我尝试使用OfType来过滤我需要的唯一对象,如下所示: public static void RunSnippet() { Base xbase; A a; B b; IEnumerable list = new List() {xbase, a, b}; Base f = list.OfType; // I need […]

如何使用JSON.Net读取JSON并输出HTML?

如何使用JSON.Net并循环使用以下JSON为“photos”对象的每个成员输出一个HTML图像标记(字符串)? 我的目标是阅读以下JSON并输出以下字符串: “” JSON存储在外部文件“photos.json”中 { “photos”: { “photo1”: { “src”: “https://stackoverflow.com/images/foo.jpg”, “alt”: “Hello World!” }, “photo2”: { “src”: “https://stackoverflow.com/images/bar.jpg”, “alt”: “Another Photo” } } } 我开始使用类似于此处所示的代码: http : //www.hanselman.com/blog/NuGetPackageOfTheWeek4DeserializingJSONWithJsonNET.aspx var client = new WebClient(); client.Headers.Add(“User-Agent”, “Nobody”); var response = client.DownloadString(new Uri(“http://www.example.com/photos.json”)); JObject o = JObject.Parse(response);’ //Now o is an object I can walk around… 但是,我没有找到一种方法来“走动o”,如示例所示。 […]