Tag: linq

我如何确保FirstOrDefault <KeyValuePair>返回了一个值

这里是我想要做的简化版本: var days = new Dictionary<int, string>(); days.Add(1, "Monday"); days.Add(2, "Tuesday"); … days.Add(7, "Sunday"); var sampleText = "My favorite day of the week is 'xyz'"; var day = days.FirstOrDefault(x => sampleText.Contains(x.Value)); 由于'xyz'不存在于KeyValuePairvariables中,所以FirstOrDefault方法不会返回有效的值。 我想能够检查这种情况,但我意识到,我不能比较结果为“空”,因为KeyValuePair是一个结构。 以下代码无效: if (day == null) { System.Diagnotics.Debug.Write("Couldn't find day of week"); } 我们尝试编译代码,Visual Studio引发以下错误: Operator '==' cannot be applied to operands of […]

如何使用IEqualityComparer

我的数据库中有一些相同的号码。 我想让所有这些都不重复。 然后我创build一个比较类来完成这个工作,但是函数的执行会使得函数有一个很大的延迟,从0.6秒到3.2秒没有区别! 我是对的还是要用另一种方法? reg.AddRange((from a in this.dataContext.reglements join b in this.dataContext.Clients on a.Id_client equals b.Id where a.date_v <= datefin && a.date_v >= datedeb where a.Id_client == b.Id orderby a.date_v descending select new Class_reglement { nom = b.Nom, code = b.code, Numf = a.Numf, }).AsEnumerable().Distinct(new Compare()).ToList()); class Compare : IEqualityComparer<Class_reglement> { public bool Equals(Class_reglement x, […]

为什么有一些对象属性UnaryExpression和其他MemberExpression?

对我的答案select使用lambda而不是string属性名称问题的模型属性 ,想要将属性添加到集合,如下所示: var props = new ExportPropertyInfoCollection<JobCard>(); props.Include(model => model.BusinessInstallNumber).Title("Install No").Width(64).KeepZeroPadding(true); props.Include(model => model.DeviceName).Title("Device").Width(70); props.Include(model => model.DateRequested).Title("Request Date").Format("{0:dd/MM/yyyy}").Width(83); 我在Include方法中编写了下面的代码: public class PropertyCollection<T> { public void Include(Expression<Func<T, object>> expression) { var memberExpression = expression.Body as MemberExpression; if (memberExpression != null) { var pes = new ExportPropertyInfoBuilder {Property = new ExportPropertyInfo {Property = memberExpression.Member as PropertyInfo}}; Properties.Add(pes.Property.Property.Name, […]

ILookup <TKey,TVal>与IGrouping <TKey,TVal>

我一直在阐明ILookup<TKey, TVal>和IGrouping<TKey, TVal>之间的差异,而且我很好奇,如果我现在正确地理解它的话。 LINQ通过生成IGrouping项目的序列,同时也给了我一个ToLookup扩展方法来加强这个问题。 所以直到我看得更仔细,才觉得它们是一样的。 var q1 = from n in N group n by n.MyKey into g select g; // q1 is IEnumerable<IGrouping<TKey, TVal>> 这相当于: var q2 = N.GroupBy(n => n.MyKey, n => n); // q2 is IEnumerable<IGrouping<TKey, TVal>> 看起来很像: var q3 = N.ToLookup(n => n.MyKey, n => n); // q3 is ILookup<TKey, TVal> […]

Find()与FirstOrDefault()的性能

可能重复: Find()与Where()。FirstOrDefault() 有一个有趣的结果search戴安娜在一个简单的引用types具有单个string属性的大序列。 Stopwatch watch = new Stopwatch(); string diana = "Diana"; while (Console.ReadKey().Key != ConsoleKey.Escape) { //Armour with 1000k++ customers. Wow, should be a product with a great success! 🙂 var customers = (from i in Enumerable.Range(0, 1000000) select new Customer { Name = Guid.NewGuid().ToString() }).ToList(); customers.Insert(999000, new Customer { Name = diana }); […]

是否有Queryable.SelectMany()方法的C#LINQ语法?

当使用C#LINQ语法编写查询时,是否有一种方法可以使用关键字语法中的Queryable.SelectMany方法? 对于 string[] text = { "Albert was here", "Burke slept late", "Connor is happy" }; 使用stream利的方法,我可以查询 var tokens = text.SelectMany(s => s.Split(' ')); 是否有类似于的查询语法? var tokens = from x in text selectmany s.Split(' ')

.NET List <T> Concat与AddRange

generics列表上的AddRange和Concat函数有什么区别? 是另一个build议吗?

使用LINQ将string转换为int数组

可能重复: C#:是否有一个LINQ的方式来创build一个给定的数组构造函数参数的对象数组? 我有一个函数(tointarray)将string转换为一个int数组,但我不是很满意。 它完成了这项工作,但必须有一个更优雅的方式来做到这一点,也许LINQ可以在这里帮助。 不幸的是我在LINQ中不是很好。 有没有更好的办法? 我的function: { string s1 = "1;2;3;4;5;6;7;8;9;10;11;12"; int[] ia = tointarray(s1, ';'); } int[] tointarray(string value, char sep) { string[] sa = value.Split(sep); int[] ia = new int[sa.Length]; for (int i = 0; i < ia.Length; ++i) { int j; string s = sa[i]; if (int.TryParse(s, out j)) { ia[i] […]

我如何在T4模板中使用Linq?

我使用T4为项目生成一些屏幕和中间层代码,并希望使用Linq来简化我的一些模板代码。 但是,当我尝试使用Linq时,模板会报告语法错误。

用LINQ分页收集

如果你有一个startIndex和一个count ,你如何通过LINQ中的一个集合进行分页?