我在XAML中有以下数据网格:
<DataGrid ItemsSource="{Binding View}" AutoGenerateColumns="False" IsReadOnly="True"
GridLinesVisibility="None" CanUserAddRows="False" CanUserDeleteRows="False"
CanUserResizeColumns="False" CanUserResizeRows="False"
CanUserReorderColumns="False" >
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="FontSize" Value="12" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Type" Width="200" FontSize="12"
Binding="{Binding Path=Name}" />
<DataGridTemplateColumn Header="Ingredients" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Ingredients}"
AutoGenerateColumns="False" IsReadOnly="True"
GridLinesVisibility="None" CanUserAddRows="False"
CanUserDeleteRows="False" CanUserResizeColumns="False"
CanUserResizeRows="False" CanUserReorderColumns="False" >
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="FontSize" Value="12" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Ingredients"
Width="*" FontSize="12"
Binding="{Binding Path=IngredientName}"/>
<DataGridTextColumn Header="Quantite" Width="*"
FontSize="12" Binding="{Binding Path=Qty}"/>
</DataGrid.Columns> …Run Code Online (Sandbox Code Playgroud) 我具有以下数据结构:列出myOrders
因此,这是基于今天收到的订单的数据列表(如下所示)(因此,如果不同的人多次购买相同的商品,则可以重复)。
Data
{
string itemName
double itemQuantiy
string partName
double partQuantity
}
Run Code Online (Sandbox Code Playgroud)
例如,填充后的列表如下所示:
itemName itemQuantity partName partQuantity
A 1 alpha 5
A 1 beta 2
A 1 delta 100
B 1 alpha 17
B 1 gamma 2000
A 2 alpha 10
A 2 beta 4
A 2 delta 200
Run Code Online (Sandbox Code Playgroud)
从上表中可以看到,项目A有3个部分(alpha,beta,delta),项目B有两个部分(alpha,gamma),它们各自具有各自的数量,在此示例中,项目A被定购了两次(前3行)是A的1个单位的第一个顺序,A的2个单位的后3行)。
我需要向用户展示此内容,但应按项目分组并且应汇总数量。
最终结果(在屏幕上显示给用户)应如下所示:
itemName itemQuantity partName partQuantity
A 3 alpha 15
beta 6
delta 300
B 1 alpha 17
gamma 2000
Run Code Online (Sandbox Code Playgroud)
可以使用LINQ之类的东西或WPF中的某些东西完成此操作吗?(或您可能建议的其他任何方式-我现在很茫然)。
我目前有以下代码:
var data = /* enumerable containing rows in your table */;
var part = "X";
var items = new HashSet<int>(data
.Where(x => x.PartName == part)
.Select(x => x.ItemName));
var query = data.Where(x => items.Contains(x.ItemName));
Run Code Online (Sandbox Code Playgroud)
items查找具有特定数据的数据中的所有项目PartName.
query 返回该项的数据中的所有记录.
我需要将它转换为单个LET语句(或其他东西),我可以将其嵌入另一个更大的LINQ查询中.
例如,如果我的数据如下(记录):
ItemName PartName
1 A
1 B
2 A
3 C
Run Code Online (Sandbox Code Playgroud)
我正在寻找部分为"A"的物品,我需要最终结果:
1 A
1 B
2 A
Run Code Online (Sandbox Code Playgroud)
一个建议是做这样的事情:
let a = data.GroupBy(x => x.ItemName)
.Where(g => g.Any(x => x.Partname == part))
.Select(g => new
{
ItemName = …Run Code Online (Sandbox Code Playgroud) 我试图在Haskell中复制以下要求/代码
伪代码(实际评估要复杂得多):
if (x == 1)
doX()
else if (y == 1)
doY()
else if (z == 1)
doZ()
else
doSomethingElse()
Run Code Online (Sandbox Code Playgroud)
现在我把它作为每个的WHEN语句,但这并没有给我一个ELSE,所以我有
when (x == 1) $ do doX
when (y == 1) $ do doY
when (z == 1) $ do doZ
Run Code Online (Sandbox Code Playgroud)
但那我该如何管理我的其他人呢?
我有一个我创建的数据类型(SlcCustomer)列表:
[SlcCustomer {slcCustName = "Xena Gamble", slcCustID = 1, slcCustAge = 27},SlcCustomer {slcCustName = "Brooke Castaneda", slcCustID = 2, slcCustAge = 80}]
Run Code Online (Sandbox Code Playgroud)
我在结果上使用PRINT函数得到了这个输出.
现在我需要FILTER这个,我想删除任何有slcCustAge <= 20的行...有没有办法使用内置的过滤器类型的东西,并以某种方式检查?
我的代码中定义了以下TYPE:
type Pos = (Int, Int) -- position in 2 dimensions
Run Code Online (Sandbox Code Playgroud)
我想创建一个包含Pos元素的列表(或堆栈或其他).
我需要能够将一个Pos元素添加(推送)到列表的头部(当在该位置进行更改时),并在需要时从列表的头部拉出(弹出)一个Pos(以重放最后一个)更改).
我对Haskell真的很陌生,那么最好的方法是什么?我应该只使用一个列表并与HEAD一起玩吗?但是如何从头部"弹出"中"移除",或者是否有我可以使用的堆栈(对我来说听起来像堆栈类型的东西) - 如果是这样的话我该如何使用"Pos"类型的元素创建它?
在尝试在 WPF C# 中设置 datagrid 单元格的属性时,我在堆栈上找到了一篇文章,它提供了我需要的代码(希望如此) - 奇怪的是,我无法编译它,因为我似乎无法找到如何正确声明Typeof。
代码:
var datagrid = new DataGrid();
Style columnStyle = new Style(Typeof(TextBlock));
datagrid.Columns.Add(new DataGridTextColumn()
{
ElementStyle = columnStyle
}
Run Code Online (Sandbox Code Playgroud)
原始代码发布:
通过后台代码设置DataGridTextColumn.ElementStyle
我想要做的是模仿以下内容以启用文本换行:
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property="TextBlock.TextWrapping" Value="Wrap" />
</Style>
Run Code Online (Sandbox Code Playgroud)
问题是在声明我的样式时 Typeof,编译器会出现以下错误:
名称“Typeof”在当前上下文中不存在
“System.Windows.Controls.TextBlock”是“类型”,但用作“变量”
我做了一些搜索以查看 C# 中定义的 Typeof 但实际上找不到任何东西......有人有任何线索吗?
我正在为学校项目(并非旨在用于现实世界)运行一个非常简单的python(3.x)客户端-服务器程序(均在本地PC上),该程序只是来回发送消息(例如查看客户,添加客户,删除客户等...真正的基础)。
有时数据可以是多个记录,这些记录我已经存储为namedTuples(这很有意义),然后沿着使用Pickle进行传输的道路走了。
因此,例如在客户端上,我这样做:
s.send(message.encode('utf-8'))
pickledResponse = s.recv(4096);
response = pickle.loads(pickledResponse)
Run Code Online (Sandbox Code Playgroud)
现在,我经常遇到以下错误:
response = pickle.loads(pickledResponse)
EOFError: Ran out of input
Run Code Online (Sandbox Code Playgroud)
我担心这与我的套接字(TCP)传输有关,也许不知何故我没有及时获取我的pickle.loads的所有数据-有意义吗?如果不是这样的话,我真的迷失了为什么会如此不一致地发生。
但是,即使我是对的,我也不知道如何(快速)解决它,我正在考虑丢下泡菜,只使用琴弦(但这难道不会遭受同样的命运)吗?有没有人有什么建议?
确实,我的信息非常基础-通常只是一个命令和一些小数据,例如“ 1 = John”,这意味着命令(1)是FIND命令,然后是“ John”,它返回记录(名称,年龄等)。 )(作为namedTuple,但老实说这不是强制性的)。
寻找快速修复的任何建议或帮助将不胜感激...
你能在WHEN条款中进行多次评估吗?
例如,有没有办法做这样的事情:
when (x == "Open" and y == "Ready") $ do...
Run Code Online (Sandbox Code Playgroud)
我可以得到一个单一的条件,但如果我需要两者都是真的怎么办?