草庐IT

c# - LINQ 命名标准 - Lambda 表达式

这个问题在这里已经有了答案:Lambdavariablenames-toshortname,ornottoshortname?[closed](11个答案)关闭9年前。我们通常遵循所有C#语法的编码/命名标准。例如,如果我们在方法中声明字符串,我们使用范围-数据类型-字段名格式。(lstrPersonName)ListicolPerson;privateLoadPersonName(){stringlstrPersonaName;}我在想我们如何遵循Lambda表达式中的命名标准。特别是当我们为funcdelegate定义参数时,我们使用像x这样的短名称。例如varlobjPerson

c# - Linq扩展方法,如何在集合递归中查找子项

我已经熟悉Linq,但对扩展方法知之甚少,希望有人能帮助我。所以我有这个分层集合伪代码即:classProductpropnameproptypepropidpropListchildren我有一个产品列表Listproducts.有什么方法可以通过扩展方法通过id查找此集合中的产品吗?换句话说,我需要层次结构中某处的一项。 最佳答案 这是一个通用的解决方案,一旦找到匹配项,它就会短路层次结构的遍历。publicstaticclassMyExtensions{publicstaticTFirstOrDefaultFromMany(t

c# - 如何管理多个 OrderByDescending 条件?

我想得到一个列表,该列表按优先级为3个属性排序截止日期数量运行日期我的代码在这里MyList.OrderByDescending(p=>p.ToDate).OrderByDescending(p=>p.Number).OrderByDescending(p=>p.RunDate).FirstOrDefault();但结果不正确。例如,当MyList包含两个元素:e1、e2和e1.ToDate>e2.ToDate,结果为e2。哪个属性应该放在第一位?具有最高优先级(ToDate)或最低优先级(RunDate)的属性? 最佳答案 我怀疑

c# - LINQ .SUM() 和可为空的数据库值

我知道为什么会这样,但有人能指出正确的语法方向吗?目前我有:varexpense=fromeindb.I_ITEMwheree.ExpenseId==expenseIdselecte;returnexpense.Sum(x=>x.Mileage??0);我的问题是x.Mileage的类型是“double?”并且在数据库中有空值。我得到的错误是:ExceptionDetails:System.InvalidOperationException:Thecasttovaluetype'Double'failedbecausethematerializedvalueisnull.Eithert

c# - linq to 实体,where in where 子句? (里面的地方)

我有一个表,该表具有到一个表的一对多映射,该表具有到另一个表的多对多映射。我想执行以下操作:varresults=context.main_link_table.Where(l=>l.some_table.RandomProperty=="myValue"&&l.some_table.many_to_many_table.Where(m=>m.RandomProperty=="myValue"));我怎样才能做到这一点?第一部分会起作用,但在没有“内部WHERE”的情况下尝试时,我无法访问many_to_many_table的属性,但“内部位置”显然无法编译。我基本上想实现类似以下SQ

c# - LINQ to Entities 仅支持转换实体数据模型基元类型?

我正在尝试在我的View中填充下拉菜单。任何帮助是极大的赞赏。谢谢。错误:Unabletocastthetype'System.Int32'totype'System.Object'.LINQtoEntitiesonlysupportscastingEntityDataModelprimitivetypes.Controller:ViewBag.category=(fromcinnewIntraEntities().CategoryItemsselectnewSelectListItem(){Text=c.Name,Value=""+c.ID}).ToList();查看:Categor

无法从具有多个返回的 Select 中的用法推断出 C# 类型参数

我不认为我在做任何太深奥的事情,但我没有看到任何其他关于此的问题。以下代码(我已将其简化为基本要素)在C#4中生成编译器错误。但是,类型参数是什么应该是显而易见的-最大公分母(“A类”)也是在方法“Frob”的返回类型中明确定义。编译器不应该列出lambda表达式中的所有返回类型,创建一个祖先树来找到它们的共同祖先,然后将其与包含方法的预期返回类型进行协调吗?Thetypeargumentsformethod'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)'cannotb

c# - 林克到 SQL : Sort Query by Arbitrary Property(Column) Name

我有一个更大/更复杂的问题,但为了简单起见,让我们考虑以下问题:假设我在SQL数据库中有一个名为Product的表,它有两列,ID(int,primary键)和名称(varchar/string)。我还有一个简单的LINQDataContext。我构造了一个查询并将其交给“我的”函数。让我们假设它是这样的:(虽然它可能有点复杂)IQueryablequery=frompindb.Productsselectp;一旦我的方法得到这个查询,作为参数传入,它必须更改排序顺序,例如IQueryablesortedQuery=query.OrderBy(x=>x.Name);我想让它更通用,即指

c# - 在 watch/debugger 中查看 LINQ 查询的结果

有没有一种方法可以在VisualStudio2010中查看LINQ查询的结果?如果您将查询添加为监视表达式,它将显示“表达式不能包含lambda表达式”。在一些测试代码中,我汇总了一些child的一堆指标的总和,并将总和与他们parent的相同指标的值进行比较(深层嵌套if-else)。我所有的查询都在if语句中。如何在不将结果分配给局部变量的情况下查看这些值?分配使我的行数加倍,除了调试之外没有任何好处。有没有人有变通方法来在调试器中查看LINQ查询的结果? 最佳答案 您目前不能在VisualStudio的监视列表中使用lambd

c# - 确定 .NET 中两个 IEnumerable<T> 集的相对补码

有没有简单的方法来获取relativecomplement两套?也许使用LINQ?我必须找到集合A相对于B的相对恭维。A和B的类型都是HashSet但我认为该算法可以更通用(IEnumerable甚至ISet)?我可以使用VB.NET或C#中的解决方案。 最佳答案 你试过了吗Enumerable.Except?setB.Except(setA)例子:HashSetsetB=newHashSet{1,2,3,4,5};HashSetsetA=newHashSet{1,3,5,7};HashSetresult=newHashSet(se