在LINQ中使用C#SQL,我遇到了这样的声明:
var names = database.Browsers.Select(b => b.Name);
Run Code Online (Sandbox Code Playgroud)
怎么b=>b.Name办?什么是=>运营商一般做什么?
代码是C#.net框架的一部分,其中database是通过Linq在底层数据库上的句柄.
试图在MVC 4 C#中对饼图的图例进行排序.该图表显示按商品编号销售的产品数量.在图例中,我想显示项目编号,然后显示已售出的编号,然后显示已售出的百分比,并按销售的数量按降序排序.
我已经得到了"Y"值(#已售出)以便正确订购,但在尝试订购"X"值时,它们最终混乱并且与其正确的"Y"值不匹配.
在我看来,我应该只需要按项目编号对数据进行分组,然后按项目编号的匿名类型和项目编号的数量选择数据,然后根据项目编号计数降序排序,然后再次选择此时间现在以正确的顺序获取项目编号的列表字符串.
上述工作正常运行是合理的,而问题更多的是我几乎完全不了解该DataBindXY方法在图表中的工作原理.
码:
var data = srv.GetTSMMetricData(Mode, Territories, selectedTerritory).GroupBy(x => x.ItemNumber).ToList();
var xValues = data.Select(x => x.Key).OrderByDescending(x => x.Count()).ToList();
mySeries.Points.DataBindXY(xValues, data.Select(x => x.Count()).OrderByDescending(x => x).ToList());
Run Code Online (Sandbox Code Playgroud)
任何正确方向的帮助或推动都会很棒.如果还有其他任何我可以发布的内容可能会丢失,请告诉我.
谢谢.
编辑:忘了我试图在以上版本的上述代码中使用匿名类型..
var xValues = data.Select(x => new { Item = x.Key, Count = x.Key.Count() }).OrderByDescending(x => x.Count).ToList();
mySeries.Points.DataBindXY(xValues.Select(x => x.Item).ToList(), data.Select(x => x.Count()).OrderByDescending(x => x).ToList());
Run Code Online (Sandbox Code Playgroud)
编辑2:当前结果示例(前5个图例条目)..
ItemNumber - # Sold - % Sold ----- Correct ItemNumber for # Sold
-------------------------------------------------------------
8500 42 (20.79)% PRS
JOL 19 (9.41)% …Run Code Online (Sandbox Code Playgroud) 前一阵子我偶然发现了以下一行代码:
return accumulate(s, s + size, char(), (_1 ^ _2));
Run Code Online (Sandbox Code Playgroud)
它使用的是boost标题,但我一直认为它非常非常优雅(注意lambda没有命名输入参数,所以它超短.:)请注意我知道C++ 11有lambda函数,这是不是关于lambdas,而是关于这个很好的短语法.
return x%2 != 0; // Return true if x is odd. => ok
return x>0 == 1; // Return true if x > 0 => this won't work
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么第二行不起作用?为什么我不能用">","=","<"...运营商?
在我看来,我有一行代码可以呈现一个编辑器模板.
但是,它返回错误:
模板只能用于字段访问,属性访问,单维数组索引或单参数自定义索引器表达式.
这似乎是实现我想要的最优雅的方式但我意识到我的视图中的lambda表达式对于编辑器模板来说太复杂了.
谁能建议如何做这项工作或建议我更好的方法?
视图
@Html.EditorFor(model => model.Approvers.Where(a => a.ApprovalCount > 0))
Run Code Online (Sandbox Code Playgroud)
编辑模板
@model Project.ViewModels.AssignedApproverData
<div class="span3">
<label class="checkbox inline">
@Html.HiddenFor(model => model.EmployeeID)
@Html.CheckBoxFor(model => model.Assigned)
@Html.DisplayFor(model => model.FullName)
</label>
</div>
Run Code Online (Sandbox Code Playgroud)
编辑模板ViewModel
using System;
using System.Collections.Generic;
using Project.Models;
namespace Project.ViewModels
{
public class AssignedApproverData
{
public string EmployeeID { get; set; }
public string FullName { get; set; }
public bool Assigned { get; set; }
public int ApprovalCount { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型
namespace Project.ViewModels
{ …Run Code Online (Sandbox Code Playgroud) 我想找到使用linq查询重复的整数.例如,我的清单包括
var array = new int[]{1,1,1,2,2,2,2,3,3,9,9,16,16};
现在我想查询像我想的计数1的3
计数2的4
计数3的2
计数9的2
计数16为2
我如何在c#中使用linq来做到这一点.希望你理解我的问题.
我正在从远程数据库读取一组行,从本地数据库读取类似的集合,然后使用RemoveAll删除本地已存在的远程行...
remote_events = (From a In remote.Events
Where ...etc...).ToList
local_events = (From a In local.Events
Where ...etc...).ToList
remote_events.RemoveAll(Function (ByVal event_row As Remote_Event)
(From a In local_events Where a.Identifier = event_row.Identifier).Count > 0)
Run Code Online (Sandbox Code Playgroud)
但这对我来说似乎不对.当我真正需要做的是检查是否存在匹配时,我认为我不应该计算事物.我已经试过的各种用途IsDBNull和IsNothing,但得到的废话.我不能使用.Except(这里建议)因为列表元素不是同一类型.
有没有更好的方法呢?
在以下示例中:
class A(object):
pass
prop1 = 1
prop2 = 2
prop3 = 3
prop4 = 4
obj = A()
tmp = ['prop1', 'prop2', 'prop3', 'prop4']
getter = [ lambda: getattr(obj, x) for x in tmp ]
Run Code Online (Sandbox Code Playgroud)
我总是4在打电话给getter:
[getter[i]() for i in range(4)]
#[4, 4, 4, 4]
Run Code Online (Sandbox Code Playgroud)
为什么!?
我想Future通过使用较少的lambda 来使我的用法更具建设性.目前我正在使用map和lambdas来访问期货的结果.例如:
val rateQuote = future {
connection.getCurrentValue(USD)
}
val purchase = rateQuote map { quote =>
if (isProfitable(quote)) connection.buy(amount, quote)
else throw new Exception("not profitable")
}
purchase onSuccess {
case _ => println("Purchased " + amount + " USD")
}
Run Code Online (Sandbox Code Playgroud)
map我不想为每个提供lambda(匿名函数),而是提供一个命名函数/方法.我该怎么办?例如:
val rateQuote = future {
connection.getCurrentValue(USD)
}
def namedFunction(arg: Arg) =
if (isProfitable(quote)) connection.buy(amount, quote)
else throw new Exception("not profitable")
val purchase = rateQuote map { quote => namedFunction }
Run Code Online (Sandbox Code Playgroud)
甚至更好
val purchase = rateQuote …Run Code Online (Sandbox Code Playgroud) 我正在阅读关于lambdas(潜入python)并且我已经执行了一个示例代码,我得到的结果与文本状态不同.它是example 4.21:
processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
Run Code Online (Sandbox Code Playgroud)
这是我的py 2.7控制台输出:
>>> collapse = True
>>> processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
>>> processFunc("this is\na\ttest")
'this is a test'
>>> collapse = False
>>> processFunc("this is\na\ttest")
'this is a test'
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,无论collapse值是什么,都会返回第一个lambda表达式.我的思维或python版本发生了变化,或者为什么我的结果与这本传奇的书籍有所不同?