小编BFr*_*ree的帖子

C#Linq结果ToDictionary帮助

我有一个lambda表达式,可以从Dictionary获得结果.

var sortedDict = (from entry in dctMetrics 
                  orderby entry.Value descending 
                  select entry);
Run Code Online (Sandbox Code Playgroud)

表达式拉回了我需要的对,我可以在IDE的调试模式中看到它们.

如何将此转换回与源相同类型的字典?我知道sortedDict的TElement是一个KeyValuePair,但是我无法完全理解ToDictionary扩展方法的语法.我也尝试将var结果分段构造一个新的字典,但无济于事.

有这样的东西(功能明智):

var results = (from entry in dictionary 
               orderby entry.Value descending 
               select entry);
Dictionary<string,float> newDictionary = results as (Dictionary<string,float>);
Run Code Online (Sandbox Code Playgroud)

c# linq lambda dictionary key-value

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

这是实现异步编程模型的好方法吗?

我最近一直在努力学习关于.Net多线程的一切.(变得更好,但仍然觉得有很多东西需要学习).现在我专注于APM(异步编程模型),这通常被称为:

//non async method
public int DoSomeWork(int arg)
{
   //do something and return result
}

//async version
public IAsyncResult BeginDoSomeWork(int arg, AsyncCallback callback, object @object)
{

}

public int EndDoSomeWork(IAsyncResult result)
{

}
Run Code Online (Sandbox Code Playgroud)

现在,假设我正在编写一些库,并且我希望将此功能公开给任何使用我的API的人,我正在考虑实现此模式的方法.实现IAsyncResult接口是可能的,但它似乎相当复杂.我的问题是,如果使用委托是一个可接受的解决方案.我的意思是:

public class MyClass
{
    private Func<int, int> func;

    //non async method
    public int DoSomeWork(int arg)
    {
        //do something and return result
    }

    //async version
    public IAsyncResult BeginDoSomeWork(int arg, AsyncCallback callback, object @object)
    {
        this.func = new Func<int, int>(DoSomeWork);
        var asyncResult = this.func.BeginInvoke(arg,callback,object);
        return asyncResult;
    }

    public …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading asynchronous

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

"无法翻译表达式"尝试使用自定义SP使用LINQ to SQL类进行插入时出错

使用LINQ to SQL类,以及以下代码:

clindt.clinDataContext ctx = new clindt.clinDataContext();

clindt.RoleMembership rm = new clindt.RoleMembership();
rm.Created_By ="bob";
rm.Modified_By ="bob";
rm.ProfileID = 2;
rm.RoleID=1;
rm.Created_Date = DateTime.Now;
rm.Modified_Date = DateTime.Now;

ctx.RoleMemberships.InsertOnSubmit(rm);
ctx.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"无法翻译表达式'值(clindt.clinDataContext).p_InsertRoleMembership(0,2,1,11/10/2010 2:33:38 PM,"bob",11/10/2010 2:33:38 PM," bob")'进入SQL并且无法将其视为本地表达式."

一些附加信息:类被配置为使用自定义存储过程进行插入.只有3个表发生此错误.有趣的是,它们都在一个名为"安全"的模式中.每个其他表都在'dbo'架构中.

c# linq-to-sql

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

有没有办法在VS Debugger中自定义自定义对象的工具提示?

假设您有一个自定义类称为Foo.当你有一个这个类的实例时,在调试过程中,如果你将鼠标悬停在这个对象上,你将看到该类型的完全限定的命名空间名称,或者如果你在这个类中重写ToString,你会看到它.有没有办法定制工具提示会说什么?

c# debugging visual-studio

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

可以重新破坏你的代码吗?

作为一个独立商店的年轻(ish)开发人员,我非常欣赏Resharper作为学习工具和mini-QA.话虽这么说,Resharper在某些情况下可能会破坏你的代码(可能是边缘)?

例如(见下文),R#不断暗示我的 - >

this. is redundant catch is redundant

还有其他一些例子,但我并没有像一般情况那样询问具体的例子.

有没有人有一个R#建议打破他们的代码?如果是这样的话,对我来说最重要的是什么呢?我能找到什么才能理解它是否真的给了我不好的建议?

 private void LoadMyForm(DataRow row)
    {

        try
        {
            this.tbxFirstName.Text = row["FirstName"].ToString();
            this.tbxLastName.Text = row["LastName"].ToString();
            tbxMiddleName.Text = row["MiddleName"].ToString();
            tbxPersonID.Text = row["PersonID"].ToString();
            tbxSSN.Text = row["SSN"].ToString();
            tbxEmailAddress.Text = row["EmailAddress"].ToString();
        }
        catch (Exception)
        {
            throw;
        }
    }
Run Code Online (Sandbox Code Playgroud)

.net resharper

3
推荐指数
3
解决办法
867
查看次数

无法将索引应用于"T"类型的表达式

我已经创建了一个通用的方法

public void BindRecordSet<T>(IEnumerable<T> coll1, string propertyName)
            where T : class
Run Code Online (Sandbox Code Playgroud)

var result = ((T[])(coll1.Result))[0];

string result= secFTSResult[propertyName];

我收到错误无法将索引应用于'T'类型的表达式

请帮忙谢谢

c#

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

如何在Windows Mobile中启动设备时启动应用程序?

正如标题所说.我希望我的应用程序在Windows Mobile设备打开时启动?我正在使用C#中的.NET Compact Framework 3.5开发此应用程序.谢谢!

.net c# compact-framework windows-mobile

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

C#Julian Date Parser

我在电子表格中有一个单元格,它是Excel中的日期对象,但是当它出自C1的xls类时,变成了一个双精度(类似于2009年1月7日的39820.0).我读到这是朱利安的日期格式.有人能告诉我如何将其解析回C#中的DateTime吗?

更新:看起来我可能没有朱利安日期,而是自1899年12月30日以来的天数.

.net c# julian-date

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

什么是对以下数据结构的更好的替代方法:Dictionary <string,Dictionary <string,string >>

我有以下数据集

<ids>
   <id1 attr1="value1" attr2="value2" />
   <id2 attr3="value3" attr4="value4" />
   <id3 attr2="value6" attr5="value7" />
</ids>
Run Code Online (Sandbox Code Playgroud)

基本上,它是一个XML,可以包含任何具有任何属性值的属性名称的节点名称.

解析XML后,我将属性数据存储在Dictionary中.然后我将相同的Dictionary存储为一个值,节点名称作为键.所以我的数据结构将是Dictionary <string,Dictionary <string,string >>(让我们给它一个名为"dict"的变量名)所以如果我想在id1节点中获取attr2的值,我会这样做:

string value = dict["id1"]["attr2"];
// value will be value2
Run Code Online (Sandbox Code Playgroud)

我认为这对我的需求来说是一个非常简单和可行的解决方案,但我的脑海中似乎只有这样的声音告诉我,我错过了不同的数据结构或更简单的解决方案.每个人都在想什么?

c# data-structures

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

如何将列表框中的选定项添加到c#中列出<string>

如何将列表框中的选定项添加到列表以获取所选的用户名

我的代码:

        List<String> lstitems = new List<String>();

        foreach (string str in lstUserName.SelectedItem.Text)
        {
            lstitems.Add(str);
        }
Run Code Online (Sandbox Code Playgroud)

它告诉我错误说无法将char转换为字符串....如何将项目添加到列表或数组

c# asp.net arrays listbox

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

如何向后添加字典?

即时通讯使用字典来存储实时到期日期,如股票价格.我想存储最多10000个刻度,最后一次是index.of 0.但是使用字典添加方法,添加的最后一个tick不是index.of 0,它会一直增加到10000.

有什么方法可以解决它.

    public static Dictionary<string, int> storePrice(string intru, double price)
    {
        Dictionary<string, int> d = new Dictionary<string, int>();
        d.Add(intru, price);
    }
Run Code Online (Sandbox Code Playgroud)

谢谢

c#

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