小编Mar*_*ell的帖子

使用LINQ Dynamic Query Library和Dictionary <string,object>和.AsQueryable()

在我以前的关于使用LINQ动态建立字符串(WHERE子句)和使用它们的问题之一,我被引向LINQ动态查询库动态LINQ.

第一个问题是它只适用于IQueryable,但是这可以通过在任何IEnumerable上使用.AsQueryable()扩展方法来克服.

我遇到的问题是Dynamic LINQ在我的Dictionary上寻找一个名为"CustomerID"的属性(或者传递给动态linq的字符串谓词的任何东西).由于词典只有键和值,这显然不起作用.

因此,我认为我很聪明,我创建了一个扩展类: Dictionary<string, object>ICustomTypeDescriptor`.

这允许我覆盖GetProperties()类型.哪个好.我现在可以迭代Dictionary键并将它们添加到PropertyDescriptorCollection返回的内容中.

但后来我遇到了另一个问题.在整个Dynamic LINQ库中,它们使用"Expression instance",它只包含一个Type.但是对于我的CustomTypeDescriptor工作解决方案,我需要一个实际的Type实例,然后才能申请TypeDescriptor.GetProperties(instance, false).

所以得到实际的问题.考虑到上述所有信息,如果数据存储在具有键值对的字典中,如何将字符串格式"CustomerID = 1234 AND Quantity> = 10000"中的自定义where子句应用于LINQ查询.

我目前的解决方案是将数据转换为a DataTable并使用该.Select(query)方法.哪个有效,但我有兴趣寻找其他解决方案.特别是用于基准测试目的.

有任何想法吗?

c# linq dictionary types properties

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

在vbscript中调用C#dll

我试图从QTP调用C#dll(使用vbscript).我尝试了很多没有成功的事情:

  • Visual Studio 2010
  • 创建C#类libary(st.dll)

码:

using System;
using System.Collections.Generic;
using System.Text;   

namespace st
{
    public class Class1
    {
        public static int GetValue()
        {
            return 34;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  • regasm /codebase st.dll
    • 失败'因为它不是有效的.NET程序集'

在QTP/vbscript中,我试过了

  • extern.Declare micInteger, "GetValue", "e:\st.dll", "GetValue"
    • 返回消息:'无效的过程调用或参数'

无论QTP如何,我都非常感谢有关如何从.vbs文件调用c#dll的任何见解.

c# dll vbscript qtp

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

使用实时应用程序保存对web.config的更改时会发生什么?

当应用程序处于活动状态时保存对web.config的更改会发生什么?我问的原因是我现在正在开发一个建立在电子商务平台之上的网站/网络应用程序.在看似随机的间隔,该网站将停止响应.应用程序池的过程是正常的(发生这种情况时没有荒谬的内存或CPU使用情况).当我对web.config做一个小改动 - 比如添加空格或删除空格,然后保存 - 该网站似乎又回来了.我想通过了解更多关于保存后的事件顺序,我可以缩小我的问题的潜在原因.

编辑:我应该提到我们在IIS 6上运行.

.net web-config

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

python http请求和响应如何工作

我是python的新手,我有任务所以我需要扫描wifi并将数据发送到服务器,下面是我必须发送的格式,这在手动输入浏览器URL文本框时工作正常,

http://223.56.124.58:8080/ppod-web/ProcessRawData?data={"userId":"2220081127-14","timestamp":"2010-04-12 10:54:24","wifi":{"ssid":"guest","rssi":"80"}}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import httplib  
import urllib

params = urllib.urlencode('{\"userId\":\"20081127-14\",\"timestamp\":\"2010-04-12 10:54:24\",\"wifi\":{\"ssid\":\"guest\",\"rssi\":\"80\"}}')

headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
conn = httplib.HTTPConnection("http://223.56.124.58:8080")
conn.request("POST","ppod-web/ProcessRawData?data=",params,headers)
response = conn.getresponse()   
print response.status  
print "-----"  
print response.reason  
data = response.read()   
print data
conn.close()
Run Code Online (Sandbox Code Playgroud)

谢谢

python http

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

实现LINQ表达式参数

我正在使用我找到的接口,它有一个将LINQ表达式作为参数的方法.如何实现此方法以使用LINQ表达式?我可以看到它非常有用,但是如何编写代码来使用它!

它是一个存储库接口.

签名是......

IQueryable<T> Get(Expression<Func<T, bool>> criteria);
Run Code Online (Sandbox Code Playgroud)

c# linq

6
推荐指数
2
解决办法
7107
查看次数

使用Protobuf-net和Monotouch for IOS序列化IEnumerable槽WCF

我正在尝试在Monotouch/Monodevelop上为IOS编写WCF服务.我使用[DataMember]/[DataContract]等标准属性作为我的可序列化对象,使用[ServiceContract]/[OperationContract]作为我的界面.一切正常,但是当我尝试在接口实现(服务器端)上实现返回IEnumerable的方法时,它没有用.

所以为了解决我的问题,我尝试使用最新版本的protobuf-net protobuf-net v2 beta r404.但我仍然从Protobuf-net收到序列化错误.请注意,"MyObject"中的IEnumerable序列化没有问题.

以下是我的代码现在的样子:

为MyObject:

[ProtoContract]
public class MyObject
{
    public MyObject ()
    {
    }

    [ProtoMember(1)]
    public int Id {get;set;}

    [ProtoMember(2)]
    public IEnumerable<MyObject> myObjects {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我的界面(Windows上的服务器端):

[ServiceContract]
public interface ITouchService
{
        [OperationContract, ProtoBehavior]
        MyObject Execute();

    [OperationContract, ProtoBehavior]
    IEnumerable<MyObject> ExecuteENUM ();
}
Run Code Online (Sandbox Code Playgroud)

我的界面(IOS上的客户端,我无法添加ProtoBehavior作为属性,因为它不在protobuf的ISO dll中):

[ServiceContract]
public interface ITouchService
{
    [OperationContract]
    MyObject Execute();

    [OperationContract]
    IEnumerable<MyObject> ExecuteENUM ();
}
Run Code Online (Sandbox Code Playgroud)

我的界面实现:

public class TouchService : ITouchService
    {
        public MyObject Execute()
        {
            var myObject = new MyObject() { Id = 9001 …
Run Code Online (Sandbox Code Playgroud)

c# ienumerable wcf serializer protobuf-net

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

TransactionScope是否与预先存在的连接一起使用?

我有这样的代码:

try
{
    using (TransactionScope scope = new TransactionScope())
    {
        some_db_function();

        for (i = 0; i < 10; i++)
        {
            some_other_db_function();
        }

        scope.Complete();
    }
}
catch (Exception ex)
{
   MessageBox.Show(ex.Message + " all done transactions will rollback");   
}
Run Code Online (Sandbox Code Playgroud)

在db函数内部发生这样的事情:

private void some_db_functions()
{
    using (TransactionScope scope = new TransactionScope())
    {
       //some processing on db
       scope.Complete();
    }
}
Run Code Online (Sandbox Code Playgroud)

假设数据库事务中存在任何问题,例如在函数中插入或更新错误; 到目前为止已经完成的所有事务都被回滚.但它并不像那样工作; 虽然它抛出异常并且scope.Complete()父函数永远不会被触发,但仍然没有任何东西被回滚.

问题出在哪儿?

c# transactionscope

6
推荐指数
2
解决办法
6177
查看次数

将对象从一个进程传递到另一个进程

我有两个.NET托管程序集.第一个是主要应用程序,一个是独立工具.

现在我要做的是将小工具与主应用程序集成.因此,当用户单击主应用程序中的按钮时,需要将"用户定义的对象"传递给另一个小工具,该工具将运行到另一个不同的独立进程.

但是我们只能向进程发送一个字符串参数.

有什么方法可以做到这一点?我需要发送到另一个进程的是具有每个文件设置的文件列表.这里的设置是我的"用户定义对象".

我有另一个转折点.

如果您正在处理的第一次没有运行,我将向其发送参数并运行该过程.但是如果进程正在运行,我是否可以向其发送参数并将数据附加到现有数据,而无需从头开始重新启动它.

对此有任何帮助.如何做到这一点.

谢谢

.net ipc process

6
推荐指数
2
解决办法
6344
查看次数

删除循环中的控件

昨天我写了一段代码来删除满足特定条件的表单中的所有控件.写得天真,这就是我想出来的.

for (int i = 0; i < this.Controls.Count; ++i)
{
    if (this.Controls[i].Name.Length == 2)
    {
        this.Controls.Remove(this.Controls[i);
    }
}
Run Code Online (Sandbox Code Playgroud)

但事实上代码是错误的.然后我将其更改为:

foreach (Control ctr in this.pbBoardImage.Controls)
{
    if (ctr.Length == 2)
    {
        this.Controls.Remove(ctr);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它仍然不正确.我知道正确的方法是:

for (int i = this.Controls.Count - 1; i >= 0; i--)
{
    if (this.Controls[i].Name.Length == 2)
    {
        this.Controls.Remove(this.Controls[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,它仍然感觉不优雅.我无法使用List.RemoveAll,因为this.Controls不是List.那么我可以要求更优雅的方式,最好不要使用循环吗?

.net c# winforms

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

我可以在Linux上使用原生Excel图表生成Excel文件吗?

有没有办法在Linux上使用Perl生成Excel电子表格,以便我可以在Windows上打开电子表格并创建原生Excel图形?我知道有libs可以绘制图形,但我知道所有的lib只是简单地将图片插入Excel,当我在Windows上打开电子表格时看起来很奇怪.所以我想知道有没有办法做得更好?可能我可以嵌入VB脚本或其他东西,以便在我在Windows上打开电子表格时自动创建图形?必须在Linux上生成原始电子表格,因此无法使用OLE或其他一些Windows技术.


多谢你们!Spreadsheet :: WriteExcel似乎是一个很好的解决方案.乍一看是否允许更改数据的维度或者在模板文件中进行硬编码(例如,10分,不多也不少).有人知道吗?

如果有人知道另一种方式来完成我的任务,请在此处发布.我有兴趣比较不同的解决方案并选择最好的解决方案.

linux windows excel perl

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