小编raj*_*net的帖子

查询MongoDB中的数组数组

说,我有这样的文件..

"ID" : "fruit1",
"Keys" : [["apple", "carrot", "banana"]]
Run Code Online (Sandbox Code Playgroud)

如何查询Keys ="carrot".以下语法均不起作用.

db.myColl.results.find({ "Keys" : "carrot" });
db.myColl.results.find({ "Keys" : [["carrot"]] });
Run Code Online (Sandbox Code Playgroud)

以下工作,但没有帮助.

db.myColl.results.find({ "Keys" : [["apple", "carrot", "banana]]});
Run Code Online (Sandbox Code Playgroud)

任何指向此查询的指针都会有所帮助.谢谢.

multidimensional-array mongodb

42
推荐指数
1
解决办法
4万
查看次数

使用ObservableCollection <T>时,是否仍需要在类型T上实现INotifyPropertyChanged?

ObservableCollection<T>笔记的MSDN参考页面:

"集合中的对象必须满足绑定源概述中描述的要求.特别是,如果您使用OneWayTwoWay(例如,您希望在源属性动态更改时更新UI),则必须实现合适的属性更改了通知机制,例如INotifyPropertyChanged接口."

既然ObservableCollection<T>已经实现了INotifyPropertyChanged,为什么我需要再次实施INotifyPropertyChangedT也?

.net observablecollection inotifypropertychanged

8
推荐指数
1
解决办法
2122
查看次数

在C#中使用空值或空值初始化元组

我有这个字典和元组在SetValue()中设置如下: -

var myDict = new Dictionary<string, Tuple<string, string>>();

private void SetValue() 
{
  var myTuple1= Tuple.Create("ABC", "123");
  var myTuple2= Tuple.Create("DEF", "456");
  myDict.Add("One", myTuple1)
  myDict.Add("Two", myTuple2)
}
Run Code Online (Sandbox Code Playgroud)

我试图在GetValue()中检索元组,如下所示: -

private void GetValue()
{
  var myTuple = new Tuple<string, string>("",""); //Is this correct way to initialize   tuple
  if (myDict.TryGetValue(sdsId, out myTuple))
  {
    var x = myTuple.Item1;
    var y = myTuple.Item2;
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,这是否是从字典中检索元组时初始化元组的正确方法?有更好的代码吗?

 var myTuple = new Tuple<string, string>("","");
Run Code Online (Sandbox Code Playgroud)

c# dictionary tuples trygetvalue

5
推荐指数
2
解决办法
2万
查看次数

字典和Hashtable在线程安全方面的区别

在线程安全方面,HashTable和Dictionary之间有什么区别吗?我没有看到任何......根据msdn,两者的定义如下: -

哈希表

Hashtable是线程安全的,可供多个读取器线程和单个写入线程使用.当只有一个线程执行写(更新)操作时,它对多线程使用是线程安全的,如果编写器被序列化为Hashtable,则允许无锁读取.

字典

只要未修改集合,Dictionary就可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.在枚举与写访问争用的极少数情况下,必须在整个枚举期间锁定该集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.

.net dictionary hashtable

4
推荐指数
1
解决办法
4559
查看次数

在MVVM中使用WPF不需要Dispatcher吗?

我正在开始一个新的线程,并尝试通过我的View模型中定义的属性更新UI元素,我能够做到没有任何错误,但如果我尝试通过代码隐藏更新UI元素,它会抛出已知的UI访问错误("调用线程无法访问此对象,因为另一个线程拥有它.").第一个问题是......两种方法的区别是什么?第二个问题是我会在ViewModel中理想地使用Disptacher吗?

代码背后

private void Button_Click(object sender, RoutedEventArgs e)
    {
        Thread th = new Thread(new ThreadStart(delegate()
            {
                textbox.Text = "Rajib";
            }
        ));

        th.Start();
    }

//inside XAML
<TextBox x:Name="textbox" Text="{Binding UserInput, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

MVVM

public string UserInput
    {
        get { return _UserInput; }
        set { _UserInput = value; OnPropertyChanged("UserInput"); }
    }
Run Code Online (Sandbox Code Playgroud)

//通过按钮上的ICommand属性调用单击public void ExecuteCommand(object obj){InvokeCallThroughAnonymousDelegateThread(); }

private void InvokeCallThroughAnonymousDelegateThread()
    {
        ThreadStart start = delegate()
        {
            UserInput = "Calling from diff thread";
        };           
        new Thread(start).Start();
    }
Run Code Online (Sandbox Code Playgroud)

wpf xaml multithreading dispatcher mvvm

2
推荐指数
1
解决办法
3451
查看次数

如何使用C#Generics比较类型?

我有一个程序,需要根据两个不相关的A和B类型做一些事情吗?我怎么能这样做?我无法从通用接口继承A和/或B.

 public class Proxy<T>
 {
        public T GetProxy()
     {
         if (typeof(T) is A)
             // Do something;
         else if (typeof(T) is B)
            // Do something else;                  
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在进行如下调用,但typeof(T)不等于A或B,而是等于System.RuntimeType.

var proxyA = Proxy<A>.GetProxy();
var proxyB = Proxy<B>.GetProxy();
Run Code Online (Sandbox Code Playgroud)

c# generics

2
推荐指数
1
解决办法
90
查看次数

将大量数据加载到UI的最佳方法

我正在构建一个交易应用程序,并且必须使用WPF在UI中处理大约500万行.数据将不时刷新.我们正在考虑使用WCF作为服务层.考虑到用户在大多数时间内需要响应式用户界面的需求,处理此类场景的最佳方法/控制是什么?

技术方面我们是微软的商店.另一个问题是,WPF可以处理大数据或WinForms的方式吗?

wpf wcf winforms

1
推荐指数
1
解决办法
1695
查看次数