我遇到了一个LINQ查询问题,所以我在LINQPad中为它做了一个简化版本来帮助我.问题是,我不明白为什么它仍然没有做我认为应该做的事情......
var list = "1 2 3 4".Split();
var result = list.FirstOrDefault(x =>
x == "3"
&& true);
result.Dump();
Run Code Online (Sandbox Code Playgroud)
这3就像人们想象的那样回馈.
但是,当我运行这个时:
var list = "1 2 3 4".Split();
var result = list.FirstOrDefault(x =>
x == "3"
&& false ? false : true);
Run Code Online (Sandbox Code Playgroud)
我1回来了.最后一行是实际代码的简化.这两个例子都应该给出true最后一行,它会返回3,但是带有条件运算符的查询会在那里引发一个扭结.
我错过了什么?
我有一个List<string>我正在使用DataSource的GridView.我不想自动生成列(它将"Item"作为标题).我怎么放的DataField,以如果我使用的是得到字符串BoundField?又<%# Eval( [whatgoeshere] ) %>在标记中?
说我有以下内容:
MyDate =
(db.MyTables.FirstOrDefault(x => x.MyID == idToFind).DateValue == DateTime.MinValue)
? DateTime.Now
: db.MyTables.FirstOrDefault(x => x.MyID == idToFind).DateValue
Run Code Online (Sandbox Code Playgroud)
如果没有运行两次LINQ查询,有没有办法做到这一点?
我不能先将它运行到temp变量中,因为这个查询本身就是一个更大的LINQ查询的一部分.
我花了一天的大部分时间试图弄清楚为什么这不起作用。我有一个 WCF 服务,它将对象流式传输到客户端。然后客户端应该将文件写入其磁盘。但是当我调用stream.Read(buffer, 0, bufferLength)它时总是返回 0。这是我的代码:
namespace StreamServiceNS
{
[ServiceContract]
public interface IStreamService
{
[OperationContract]
Stream downloadStreamFile();
}
}
class StreamService : IStreamService
{
public Stream downloadStreamFile()
{
ISSSteamFile sFile = getStreamFile();
BinaryFormatter bf = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
bf.Serialize(stream, sFile);
return stream;
}
}
Run Code Online (Sandbox Code Playgroud)
服务配置文件:
<system.serviceModel>
<services>
<service name="StreamServiceNS.StreamService">
<endpoint address="stream" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IStreamService"
name="BasicHttpEndpoint_IStreamService" contract="SWUpdaterService.ISWUService" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IStreamService" transferMode="StreamedResponse"
maxReceivedMessageSize="209715200"></binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceThrottling maxConcurrentCalls ="100" maxConcurrentSessions="400"/>
<serviceMetadata …Run Code Online (Sandbox Code Playgroud) 说我有线
dirs.ToList().ForEach(d => item.Items.Add(MyMethod(d)));
Run Code Online (Sandbox Code Playgroud)
但是现在我想避免添加到我的列表中,如果该方法返回null.有没有比这更漂亮的方式
foreach(var d in dirs)
{
object obj = MyMethod(d);
if(obj != null)
myList.Items.Add(obj);
}
Run Code Online (Sandbox Code Playgroud)
?
我正在尝试使用标准SendMessageW() 方法从控制台应用程序取消静音.但是,我们有自己的应用程序作为shell运行,而不是explorer.exe.当我试图取消静音时,没有任何反应; 但是一旦我启动资源管理器它就可以了.是否必须运行资源管理器才能发送消息?
码:
private const int APPCOMMAND_VOLUME_MUTE = 0x80000;
private const int WM_APPCOMMAND = 0x319;
SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, (IntPtr)APPCOMMAND_VOLUME_MUTE);
Run Code Online (Sandbox Code Playgroud)
返回值为SendMessageW()0.
如果需要资源管理器,是否有人知道另一种取消静音方法?
Side Note
我刚刚尝试使用vbs:
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
Run Code Online (Sandbox Code Playgroud)
并得到了相同的结果.只有在explorer.exe运行时才取消静音.
这可能是一个愚蠢的问题,但是我想从OnSelectedIndexChanged我的ASP .NET应用程序中的事件中获取两个值.
哪个更好?
var personId = Convert.ToInt32(((GridView)sender).SelectedDataKey.Values["PersonId"]);
var name = ((GridView)sender).SelectedDataKey.Values["Name"].ToString();
Run Code Online (Sandbox Code Playgroud)
要么
var gView = (GridView)sender;
var personId = Convert.ToInt32(gView.SelectedDataKey.Values["PersonId"]);
var name = gView.SelectedDataKey.Values["Name"].ToString();
Run Code Online (Sandbox Code Playgroud)
在速度变化的情况下,两次投射GridView会产生多大的影响?如果我提取更多价值怎么办?还有其他一些
c# ×6
conditional ×2
.net ×1
asp.net ×1
data-binding ×1
explorer ×1
foreach ×1
gridview ×1
linq ×1
optimization ×1
sendmessage ×1
streaming ×1
wcf ×1