我有一个ID列表
List<string> Ids;
Run Code Online (Sandbox Code Playgroud)
我想检索匹配这些ID的所有文件.
网上有解决方案:
var ids = new int[] {1, 2, 3, 4, 5};
var query = Query.In("name", BsonArray.Create(ids));
var items = collection.Find(query);
Run Code Online (Sandbox Code Playgroud)
但他们都使用旧的C#驱动程序和(不再那么新)2.2.4驱动程序API已更改,我无法找到如何构建此查询.
我有一个带有这些字段的 mongo 对象:
DateTime TimeStamp;
float Value;
Run Code Online (Sandbox Code Playgroud)
如何在 C# 中使用 LINQ 获取聚合管道,以获取特定时间戳范围内 Value 的最小值、最大值和平均值?
我看过一些聚合示例,但我不太明白。有一个像这样的简单案例的例子肯定会(希望)让我理解它。
让我们考虑一下这段代码:
type T =
{
a: int
}
let d =
[
"a", [{a = 0}; {a = 1}; {a = 2}]
"b", [{a = 3}; {a = 4}; {a = 5}]
] |> Map
Run Code Online (Sandbox Code Playgroud)
如果我想访问 a = 0 的数据:
d.["a"].[0].a <- works
d["a"].[0].a <- now works with F#6
d["a"][0] <- returns {a = 0}
Run Code Online (Sandbox Code Playgroud)
但
d["a"][0].a <- typecheck error This value is not a function and cannot be applied.
Run Code Online (Sandbox Code Playgroud)
如果我将表达式括在括号中:
(d["a"][0]).a <- it works
Run Code Online (Sandbox Code Playgroud)
这是预期的结果,还是可能是 F#6 解析错误?
有了这个代码:
using (var stream = new MemoryStream())
{
thumbnail.Save(stream); // you get the idea
stream.Position = 0; // <- is this needed?
WriteStreamToDisk(stream);
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个写入内存流的方法,然后我想将该流写入磁盘,我是否需要将位置设置为 0?
或者,流是否有不同的读/写指针?
我看到以下渲染器可用:
Default renderer: 'browser'
Available renderers:
['plotly_mimetype', 'jupyterlab', 'nteract', 'vscode',
'notebook', 'notebook_connected', 'kaggle', 'azure', 'colab',
'json', 'png', 'jpeg', 'jpg', 'svg', 'pdf', 'browser',
'firefox', 'chrome', 'chromium', 'iframe', 'iframe_connected',
'sphinx_gallery']
Run Code Online (Sandbox Code Playgroud)
但我不知道如何让 pycharm 在 IDE 中显示输出,就像我用 matplotlib 做图形一样。
如何才能做到这一点?
编辑:
这是我使用的代码,来自 plotly 的示例:
fig = go.Figure(
data=[go.Bar(y=[2, 1, 3])],
layout_title_text="test"
)
fig.show()
Run Code Online (Sandbox Code Playgroud)
这将打开一个浏览器选项卡以显示在 pycharm 调试器中运行时的图形。
编辑2:
我从一年前看到一个类似的问题,没有解决方案:
我有一些代码包装 TA-Lib,很多包装器非常相似:
let sma (timePeriod: int) (data: float[]) =
let mutable outStartIndex = 0
let mutable outNbElement = 0
let mutable smaData : float array = Array.zeroCreate (data.Length - timePeriod + 1)
let retCode = Core.Sma(0, (data.Length - 1), data, timePeriod, &outStartIndex, &outNbElement, smaData)
if retCode <> Core.RetCode.Success then
invalidOp (sprintf "AssertRetCodeSuccess")
let padding = Array.create (timePeriod - 1) System.Double.NaN
Array.append padding smaData
let ema (timePeriod: int) (data: float[]) =
let mutable outStartIndex = 0
let mutable outNbElement = 0 …Run Code Online (Sandbox Code Playgroud) 我正在为 MacOS (osx-x64) 和 Windows (win-x64) 构建单个文件可执行文件。
我的命令行是:
dotnet 发布 --nologo -r osx-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true
当迁移到 .Net 5 时,我现在收到此错误:
/usr/local/share/dotnet/sdk/5.0.100-preview.7.20366.6/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(142,5):错误NETSDK1097:不是支持将应用程序发布到单个文件而不指定运行时标识符。您必须指定 RuntimeIdentifier 或将 PublishSingleFile 设置为 false。
所以我决定添加 RuntimeIdentifier 部分:
<RuntimeIdentifiers>osx-x64;win-x64</RuntimeIdentifiers>
Run Code Online (Sandbox Code Playgroud)
事实证明,这需要在每个子项目中......有点烦人,但没关系。
但现在,它不起作用:
发布到单个文件的应用程序需要使用应用程序主机。您必须将 PublishSingleFile 设置为 false 或将 UseAppHost 设置为 true。
另外,如果我在命令行上添加所有内容:
dotnet 发布 --nologo -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true /p:UseAppHost=true /p:RuntimeIdentifier=osx-x64 -r osx-x64
我犯了同样的错误。看起来 dotnet 命令行上的配置被忽略了。
将运行时标识符添加到所有项目文件中,会产生:
错误 MSB6006:“dotnet”退出,代码为 1。
这并没有说明什么。
我的问题是:
.NET 5 的行为是否发生了变化(我找不到有关该主题的任何内容),或者预览是否已损坏?
首先,我读过:
https://fsharpforfunandprofit.com/posts/elevated-world/
和
https://ericlippert.com/2013/02/21/monads-part-one/
我觉得我有所有的部分,但没有将它们连接在一起的部分,所以我有几个问题可能可以一起回答。
此外,F# 是我第一次遇到 monads/计算表达式。我来自 C 背景,没有使用其他函数式语言和这些概念的经验。
我想澄清一下术语:据我所知,monads 是模型,计算表达式是该模型的 F# 实现。那是对的吗?
为此,我似乎明白在声明表达式时会以这种方式调用一些底层功能(绑定、映射等),但在使用时需要完全不同的语法(let!、yield!等) . 但是,您仍然可以根据需要使用原始术语(Option.map 等)。这看起来很令人困惑,所以我很好奇我是否做对了,如果是这样,为什么同一件事有两种语法?
就实际用途而言,它在我看来如下所示:
我经常使用 Result、Option 等,但我试图很好地了解底层机制。
作为实验,我从网上获取了这个:
type ResultBuilder () =
member this.Bind(x, f) =
match x with
| Ok x -> f x
| Error e -> Error e
member this.Return x = Ok x
member this.ReturnFrom x = x
Run Code Online (Sandbox Code Playgroud)
没有真正了解如何使用 Return / ReturnFrom,并以这种方式成功使用它:
ResultBuilder() {
let! r1 = checkForEmptyGrid gridManager …Run Code Online (Sandbox Code Playgroud) 当我使用net 4.7代码调试一些asp.net时,我可以在调试器中指定一些参数,主函数是获取它们.
我意识到.net核心并没有发生这种情况; 我可以在调试器选项卡中的"应用程序参数"中放置我想要的任何内容,应用程序永远不会看到该数据.
这是另一个VS'界面不匹配.net核心的情况吗?还是我错过了一些明显的东西?
添加更多细节:
我有以下数据:
我正在尝试绘制 x=long, y=short, z=balance
我是这样做的:
fig.add(go.Scatter3d(x=results['long'], y=results['short'], z=results['balance']))
Run Code Online (Sandbox Code Playgroud)
我得到了类似的东西:
我真正要找的是一个表面,就像这个例子:
所以,按照示例的代码,我做了:
fig.add_surface(x=results['long'], y=results['short'], z=results['balance'], row=2, col=1)
Run Code Online (Sandbox Code Playgroud)
但:
它不仅不显示任何数据,而且似乎完全忽略了子图布局并绘制了所有内容。
这是完整的代码:
fig = make_subplots(rows=2, cols=1, specs=[[{'type': 'xy'}], [{'type': 'scene'}]])
fig.add_trace(go.Scatter(x=series1['timestamp'], y=series1['data'], line_color='red', name='series 1'), row=1, col=1)
fig.add_trace(go.Scatter(x=series2['timestamp'], y=series2['data'], line_color='blue', name='series 2'), row=1, col=1)
fig.update_yaxes(title_text="USD", row=1, col=1)
fig.add_surface(x=results['long'], y=results['short'], z=results['balance'], row=2, col=1)
fig.show()
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是: