我有一些LINQ代码生成一个字符串列表,如下所示:
var data = from a in someOtherList
orderby a
select FunctionThatReturnsString(a);
Run Code Online (Sandbox Code Playgroud)
如何将该字符串列表转换为一个大的连接字符串?假设数据包含以下条目:
"Some "
"resulting "
"data here."
Run Code Online (Sandbox Code Playgroud)
我应该得到一个看起来像这样的字符串:
"Some resulting data here."
Run Code Online (Sandbox Code Playgroud)
我该怎么办?我想到了这个:
StringBuilder sb = new StringBuilder();
data.ToList().ForEach(s => sb.Append(s));
string result = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
但这似乎并不合适.如果它是正确的解决方案,我将如何将其转换为扩展方法?
当没有匹配时,LINQ函数究竟返回了什么?以Where方法为例,例如:
var numbers = Enumerable.Range(1, 10);
var results = numbers.Where(n => n == 50);
Run Code Online (Sandbox Code Playgroud)
在这一点上会有什么结果?
我试图在运行时更改RenderTargets,因此我可以在运行时绘制一些元素,操纵它们,然后最终将纹理绘制到屏幕上.问题是,如果我在运行时更改RenderTarget,屏幕会变为紫色.这是我在Draw中得到的代码:
RenderTarget2D tempTarget = new RenderTarget2D(GraphicsDevice, 128, 128, 1,
GraphicsDevice.DisplayMode.Format, GraphicsDevice.PresentationParameters.MultiSampleType,
GraphicsDevice.PresentationParameters.MultiSampleQuality, RenderTargetUsage.PreserveContents);
GraphicsDevice.SetRenderTarget(0, tempTarget);
GraphicsDevice.Clear(ClearOptions.Target, Color.SpringGreen, 0, 0);
GraphicsDevice.SetRenderTarget(0, null);
Run Code Online (Sandbox Code Playgroud)
如果我在运行时创建RenderTarget似乎并不重要(我确实需要在运行时创建内存中的纹理并使用SpriteBatch绘制它们),这会导致完全紫色的屏幕.我该怎么做才能解决这个问题?
我可以列出我自己电脑的共享,没有问题:
gwmi Win32_Share
Run Code Online (Sandbox Code Playgroud)
但是当我尝试
gwmi Win32_Share -computer myserver
Run Code Online (Sandbox Code Playgroud)
myserver运行 BusyBox 的 HP MediaVault mv2120在哪里。我得到回复:Get-WmiObject : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
有什么办法可以做到这一点吗?
我有一些像这样的代码:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
abstract void DoFoo();
private class FooImpl extends Foo {
public FooImpl() { }
@Override
void DoFoo() { }
}
}
Run Code Online (Sandbox Code Playgroud)
但是Eclipse告诉我No enclosing instance of type Foo is accessible.所以我怎样才能让它工作?
我试图让它尽可能简单,看它是否会编译:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
private static class FooImpl extends Foo {
public FooImpl() { }
}
}
Run Code Online (Sandbox Code Playgroud)
我仍然得到同样的错误.我错过了什么?
固定!我改了行return new FooImpl();到return …
我对C++编程不是很熟悉.我知道编程的基础知识(语法,指针等),我用它构建了一些基本程序,并在工作中完成了一些基本的调试.我对Box2D的这行代码感到困惑,特别是来自Cocos2D的Box2dTest项目:
// Define the ground body.
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0, 0); // bottom-left corner
Run Code Online (Sandbox Code Playgroud)
如果没有初始化,groundBodyDef怎么能做到这一点呢?我知道这不是Objective-C的事情,因为Box2D本身的C++示例就像这样.
我试图帮助其他人并写下这个查询:
var foundTab = (from tab in tabControl1.TabPages
where tab.Name == "tabName"
select tab).First();
Run Code Online (Sandbox Code Playgroud)
他们报告说他们收到了这个错误:
找不到源类型System.Windows.Forms.TabControl.TabPageCollection'的查询模式的实现.'哪里'找不到.考虑明确指定范围变量'tab'的类型.
我查MSDN和TabPageCollection农具IList,ICollection,IEnumerable.那么,这里发生了什么?该错误意味着什么,是否有另一种方法来查询Tab Control的TabPages属性?
is关键字的MSDN文档说:
expression is not null
Run Code Online (Sandbox Code Playgroud)
为什么?如果调用了MethodThatReturnsNull()类型,则不应返回false,因为null肯定不是那种类型?
大约六年左右我没有做过多少Java开发.我可能很快就需要将C#应用程序移植到Java,以使其在Windows和公司标准版Linux上运行(出于我无法讨论的原因).我想知道的是,从那时起,对于改进Java的最佳阅读材料是什么,所以我可以使端口尽可能平滑.
我目前正在运行.NET Framework 3.5并使用lambdas,扩展方法和LINQ.这是一个没有Web服务调用或数据库调用的客户端应用程序.我确实使用各种网络协议与其他机器通信,但我已经在研究组件来替换我们现在使用的组件(Dart Telnet,SharpSSH等)
从那时起,我一直在寻找Java语言和BCL的变化.我不记得泛型,foreach循环,拳击和拆箱是一个PITA.扩展方法,lambdas和LINQ是否有任何等价物?
c# ×7
java ×2
linq ×2
c++ ×1
keyword ×1
objective-c ×1
powershell ×1
rendertarget ×1
smb ×1
string ×1
where-clause ×1
winforms ×1
wmi ×1
xna ×1