Tag: linq to objects

LINQ Left JOIN出错

我在LINQ中写了下面的查询来执行左连接,但它的抛出错误: var qry = from c in dc.category_feature_Name_trans_SelectAll_Active() join p in dc.product_category_feature_trans_SelectAll() on c.cft_id equals p.cft_id into cp from p in cp.DefaultIfEmpty() select new { c.cft_id, c.feature_id, c.feature_name, p.product_id , p.value }; 错误: Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web […]

当我尝试获取类型的计数时,为什么LINQ查询会抛出exception

public readonly IEnumerable PeriodToSelect = new string[] { “MONTH” }; var dataCollection = from p in somedata from h in p.somemoredate where h.Year > (DateTime.Now.Year – 2) where PeriodToSelect.Contains(h.TimePeriod) select new { p.Currency, h.Year.Month, h.Value }; 有人可以告诉我为什么在下面的代码行中抛出exception? int count = dataCollection.Count(); 这是例外: System.NullReferenceException: Object reference not set to an instance of an object. at System.Linq.Enumerable.d__31`3.MoveNext() […]

使用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 […]

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

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

我如何使用LINQ和字符串解析完成此示例?

我正在尝试编写一个简单的程序来比较单独文件夹中的文件。 我目前正在使用LINQ to Objects来解析文件夹,并希望在我的结果集中包含从字符串中提取的信息。 这是我到目前为止所拥有的: FileInfo[] fileList = new DirectoryInfo(@”G:\Norton Backups”).GetFiles(); var results = from file in fileList orderby file.CreationTime select new { file.Name, file.CreationTime, file.Length }; foreach (var x in results) Console.WriteLine(x.Name); 这会产生: AWS025.sv2i AWS025_C_Drive038.v2i AWS025_C_Drive038_i001.iv2i AWS025_C_Drive038_i002.iv2i AWS025_C_Drive038_i003.iv2i AWS025_C_Drive038_i004.iv2i AWS025_C_Drive038_i005.iv2i … 我想修改LINQ查询,以便: 它只包含实际的“备份”文件(由于上面示例中的_C_Drive038 ,您可以告诉备份文件,但038和驱动器号可能会更改)。 如果文件是“主”备份文件(即,文件名末尾没有_i0XX ,我想要包含一个字段。 我想要包含文件的“图像编号”(例如,在这种情况下,它是038 )。 我希望包含增量编号,如果它是基本文件的增量(例如001将是增量编号) 我相信查询的基本布局如下所示,但我不确定如何最好地完成它(我有一些关于如何做到这一点的想法,但我有兴趣听到其他人如何可能会这样做): var results = from […]

指定与对象并行的linq的任务超时

我有一个我希望并行处理的图片列表,但是超时。 我的旧代码通过分页项目和使用WaitHandles来做到这一点,但我想使用.Net 4中提供的新的Parallel Linq或Tasks库。 以下代码段正在运行,如何为其添加超时? (超时将用于执行的每个任务,而不是所有项目的超时处理) private PictureList FetchPictures(List wallResults) { wallResults .AsParallel() .WithDegreeOfParallelism(10) .ForAll(delegate(Picture p){

动态linq中的调用函数

我试图在动态linq select语句中调用一个函数,但我得到错误: No property or field ‘A’ exists in type ‘Tuple2’ 示例代码: void Main() { var a = new Tuple(1,1); var b = new[]{ a }; var q = b.AsQueryable().Select(“A.Test(it.Item1)”); q.Dump(); } public static class A { public static int Test(int i) { return i++; } } 我该如何更改代码才能使其正常工作? 如果我调用内置函数Convert.ToInt32 ,它可以正常工作。 var q = b.AsQueryable().Select(“Convert.ToInt32(it.Item1)”); 另外我如何使用动态linq转换属性? […]

运行时创建LINQ表达式

说我有这个表达式: int setsize = 20; Expression<Func> predicate = x => x.Seed % setsize == 1 || x.Seed % setsize == 4; 这基本上将一组元素“划分”为20个分区,并从每个集合中检索每个第一和第四个元素。 此表达式传递给MongoDB ,它的驱动程序完全能够转换为MongoDB“查询”。 但是,谓词也可以用在对象列表(LINQ2Objects)等上。我希望这个表达式可以重用( DRY )。 但是,我希望能够传入IEnumerable来指定要检索的项目(因此1和4不是“硬编码”到其中): public Expression<Func> GetPredicate(IEnumerable items) { //Build expression here and return it } 使用LINQPad使用此代码: int setsize = 20; Expression<Func> predicate = x => x.Seed % setsize == 1 […]

使用LINQ和C#从旧列表中创建一个新列表

这应该很简单,但我是LINQ的新手。 我有一个FillList结构的List 。 我想使用LINQ来创建一个新的List ,而不是拥有购买和销售的数量,我将有一个包含总和的变量。 例如,如果FillStruct结构具有 buy = 4 和 sell = 2 然后NewFillStruct结构将有 numlong = 2. 如果FillStruct结构有 buy = 2 和 sell = 4 然后NewFillStruct结构将有 numlong = -2. 这是结构。 struct FillStruct { int buy; int sell; string date; } struct NewFillStruct { int numlong; string date; }

在LINQ中使用字符串作为字段名称

看下面的代码。 我想用参数field收到的字段名替换USERNAME 。 此方法必须能够在多个字段上进行一些搜索。 谢谢, public void Searching(string field, string stringToSearch) { var res = from user in _dataContext.USERs where user.USERNAME.Contains(stringToSearch) select new { Id = user.ID, Username = user.USERNAME }; }