小编use*_*612的帖子

如何在数据协定中未设置Data成员字段时,如何不返回null

我的WCF服务有一个奇怪的问题,它以JSON格式返回数据.我想根据客户发送的请求返回有关"客户"的信息.

客户可以请求他们需要的客户的哪些信息领域以及仅发送有关客户的信息的服务需求.

例如:如果客户端要求客户列表并说他们想要每个客户的名字,姓氏,城市,那么服务器应该发送一个带有每个字段名称和相应值的json响应

就像是...

[
  {"firstname":"john","lastname":"Goodman","city" :"NY"},
  {"firstname":"brad","lastname":"newman","city" :"LA"}
]
Run Code Online (Sandbox Code Playgroud)

如果客户端仅询问具有ID和城市字段的客户列表,则响应应如下所示

[
  {"id" :"1234","city" :"NY"},
  {"id":"1235","city" :"LA"}
]
Run Code Online (Sandbox Code Playgroud)

我最初的设计是实现一个"客户"类,然后将每个可能的"字段"作为该类的一个字段.然后在我的服务方法中,我获取客户端指定的字段列表,并仅使用这些属性集实例化客户对象.

我的运营合同是这样的

[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Customers?fields={value}")]
List<Customer> GetCustomers(string value);
Run Code Online (Sandbox Code Playgroud)

但问题是我用"DataContract"装饰类,每个Field为"DataMember"....如果没有设置某些属性,它们在发送到客户端时仍然会被反序列化为NULL.我不希望这种情况发生.

此外,客户的可能字段列表很长,所以课程变得非常大.我宁愿将这些字段存储为我的服务中的枚举集合而不是类的字段.

然后我想到让我的操作返回a IDictionary<string,object>然后迭代地将每个字段和值添加到此集合中.这不起作用,因为,当字典被序列化时,它显示{"Key:dfas", "Value:34"}等等而不是我想要的

所以我有点卡住了.解决这个问题的最佳方法是什么?

我可以这样标记[DataContract]如果[DataMember]没有设置属性,即null,那么它们不应该被序列化并发送给客户端吗?

wcf serialization json datacontractserializer

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

如何使用.NET在电子邮件正文中嵌入多个图像

我正在编写一个程序,向用户发送电子邮件,其中包含嵌入电子邮件正文(HTML)中的多个图像(图表).

当我尝试这里的样本时......当我只需要嵌入一个图像http://www.systemnetmail.com/faq/4.4.aspx时效果很好 .

但是,当我尝试使用以下代码嵌入多个图像时,没有嵌入任何图像,而是将它们作为附件发送.

public MailMessage MailMessage(Metric metric, DateTime date)
{
    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("test@gmail.com", "User1");
    msg.To.Add(new MailAddress("test@gmail.com"));
    msg.Subject = "Trend for metric: " + metric.Name;
    msg.IsBodyHtml = true;

    // Generate the charts for the given metric
    var charts = this.GenerateCharts(metric, date);
    int i = 0;
    string htmlBody = "<html><body>";
    List<LinkedResource> resources = new List<LinkedResource>();
    foreach (var chart in charts)
    {
        string imageTag = string.Format("<img src=cid:chart{0} /><br>", i);
        htmlBody += imageTag;
        LinkedResource graph …
Run Code Online (Sandbox Code Playgroud)

c# image system.net.mail

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

如何以编程方式在Scroll viewer中添加网格

我的XAML看起来像这样

<navigation:Page x:Class="SilverlightApplication1.Home">

    <Grid x:Name="LayoutRoot">
    <!--
    <ScrollViewer>
        <Grid>
            <TextBlock Text="myTextBlock" />
        </Grid>
    </ScrollViewer>
    -->
</Grid>
Run Code Online (Sandbox Code Playgroud)

我想以编程方式通过后面的代码执行上面的注释部分.

我的代码背后看起来像这样

public partial class Home : Page
{
    public Home()
    {
        InitializeComponent();

        ScrollViewer sv = new ScrollViewer();
        Grid grid = new Grid();
        TextBlock block = new TextBlock();

        block.Text = "My Text block";
        grid.Children.Add(block);

        sv.ScrollIntoView(grid);
        LayoutRoot.Children.Add(sv);

    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它只显示滚动查看器但隐藏了文本块.

我错过了什么?

有没有办法使用silverlight工具包中提供的扩展方法"ScrollIntoView"以编程方式将子项添加到"ScrollViewer"控件?我没有为ScrollViewer元素找到一个名为"Children"的属性

谢谢您的帮助

silverlight grid xaml scrollviewer

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

如何在bash脚本中的curl中将多行json字符串作为正文发布

我有以下bash脚本

#!/bin/bash

body=$(cat  << EOF
{
    "CreatedBy":  "$(hostname -f)",
    "Id":  "$(uuidgen)",
    "Type":  "TestAlertType",
    "AlertCategory":  "NonUrgent"
    }
EOF
)


curl -H "Content-Type: application/json" -X POST -d $body https://dev.cloudapp.net/v1/
Run Code Online (Sandbox Code Playgroud)

但我在帖子上得到了无效的json错误.我错过了什么?

bash json curl

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

如何在TPL数据流中执行异步操作以获得最佳性能?

我编写了以下方法来批处理一个巨大的CSV文件.我们的想法是从文件中读取一大块行到内存中,然后将这些行分成固定大小的批量.获得分区后,将这些分区发送到服务器(同步或异步),这可能需要一段时间.

private static void BatchProcess(string filePath, int chunkSize, int batchSize)
{
    List<string> chunk = new List<string>(chunkSize);

    foreach (var line in File.ReadLines(filePath))
    {
        if (chunk.Count == chunk.Capacity)
        {
            // Partition each chunk into smaller chunks grouped on column 1
            var partitions = chunk.GroupBy(c => c.Split(',')[0], (key, g) => g);

            // Further breakdown the chunks into batch size groups
            var groups = partitions.Select(x => x.Select((i, index) =>
                new { i, index }).GroupBy(g => g.index / batchSize, e => e.i));

            // Get batches …
Run Code Online (Sandbox Code Playgroud)

c# csv task-parallel-library blockingcollection tpl-dataflow

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

为什么相对路径在 python 测试中不起作用?

我的目录布局如下

project\
project\setup.py
project\scripts\foo.py
project\scripts\bar.py
project\scripts\__init__.py
project\tests\test_foo.py
project\tests\__init__.py
Run Code Online (Sandbox Code Playgroud)

我的测试文件如下所示

project\tests\test_fo.py

from ..scripts import foo

def test_one():
     assert 0
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我收到以下错误

cd C:\project
C:\virtualenvs\test_env\Scripts\activate
python setup.py install
python setup.py test
Run Code Online (Sandbox Code Playgroud)

E ValueError:尝试在顶级包之外进行相对导入

我究竟做错了什么?这是我的 setup.py

setup(
    name = 'project',
    setup_requires=['pytest-runner'],
    tests_require=['pytest'],
    packages = ["scripts","tests"],
    package_data={
          'scripts': ['*.py'],
          'tests': ['*.py'],
         },
)
Run Code Online (Sandbox Code Playgroud)

python relative-path setuptools setup.py pytest

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

当内部"捕获"抛出时,为什么外部"终于"没有被执行?

我写了一个简单的程序来测试一个理论,即"最终"块总是会执行,无论如何.但是,我从下面的pgm看到的是控制似乎永远不会进入外部最终区块.

我尝试在Visual Studio中使用F5和Ctrl-F5,结果相同.

有人可以解释为什么我看到这种行为吗?

控制台窗口的输出是:

内部捕获

内心终于

外部捕获

未处理的例外:

..然后应用程序崩溃

public class Program
{
    static void Main()
    {
        try
        {
            try
            {
                string s = null;
                s.ToString();
            }
            catch
            {
                Console.WriteLine("inner catch");
                throw;
            }
            finally
            {
                Console.WriteLine("inner finally");
            }

            return;
        }
        catch
        {
            Console.WriteLine("outer catch");
            throw;
        }
        finally
        {
            Console.WriteLine("outer finally");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# exception-handling exception try-catch

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

将大型CSV文件并行导出到SQL Server

我有一个大的CSV文件... 10列,1亿行,我的硬盘大小约为6 GB.我想逐行读取此CSV文件,然后使用SQL批量复制将数据加载到Microsoft SQL Server数据库中.我已经在这里以及互联网上阅读了几个主题.大多数人认为,并行读取CSV文件并不会在效率方面占用太多,因为任务/线程争用磁盘访问.

我要做的是,从CSV逐行读取并将其添加到大小为100K行的阻塞集合中.一旦这个集合完全启动一个新的任务/线程,使用SQLBuckCopy API将数据写入SQL服务器.

我编写了这段代码,但是在运行时遇到错误,该错误表示"尝试在具有挂起操作的对象上调用批量复制".这个场景看起来像是可以使用.NET 4.0 TPL轻松解决的问题,但我无法让它工作.关于我做错的任何建议?

    public static void LoadCsvDataInParalleToSqlServer(string fileName, string connectionString, string table, DataColumn[] columns, bool truncate)
    {
        const int inputCollectionBufferSize = 1000000;
        const int bulkInsertBufferCapacity = 100000;
        const int bulkInsertConcurrency = 8;

        var sqlConnection = new SqlConnection(connectionString);
        sqlConnection.Open();

        var sqlBulkCopy = new SqlBulkCopy(sqlConnection.ConnectionString, SqlBulkCopyOptions.TableLock)
        {
            EnableStreaming = true,
            BatchSize = bulkInsertBufferCapacity,
            DestinationTableName = table,
            BulkCopyTimeout = (24 * 60 * 60),
        };

        BlockingCollection<DataRow> rows = new BlockingCollection<DataRow>(inputCollectionBufferSize);
        DataTable dataTable = new DataTable(table);
        dataTable.Columns.AddRange(columns); …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server csv multithreading

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

tox无法在D:\ python27路径中检测到python解释器

我的tox.ini文件看起来像这样

[tox]
envlist=py27

[testenv]
deps=
    pytest
Run Code Online (Sandbox Code Playgroud)

这找不到我在D:\ python27而不是标准c:\ python27位置的基本python安装

如果我将tox.ini更改为此,它可以工作,但看起来很丑。

[tox]
envlist=cpy27,dpy27
skip_missing_interpreters=True
toxworkdir={toxinidir}/build/tox

[testenv]
basepython=
    cpy27: C:\Python27\python.exe
    dpy27: D:\Python27\python.exe

deps=
    pytest
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何配置tox以便弄清python在Windows机器上的安装位置,没有明确指定路径,因为每个开发人员都可能将其安装在Windows机器上的不同路径中。

python python-2.7 tox

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

如何使用FeatureUnion转换PipeLine中的多个特征?

我有一个 pandas 数据框,其中包含有关用户发送的消息的信息。对于我的模型,我感兴趣的是预测消息的缺失收件人,即给定消息的收件人 A、B、C,我想预测还有谁应该成为收件人的一部分。

我正在使用 OneVsRestClassifier 和 LinearSVC 进行多标签分类。对于功能,我想使用消息的收件人。主题和主体。

由于收件人是用户列表,我想使用 MultiLabelBinarizer 转换该列。对于主题和正文,我想使用 TFIDF

我的输入 pickle 文件的数据如下: 除收件人之外的所有值都是字符串,这是一个 set()

[[message_id,sent_time,subject,body,set(recipients),message_type, is_sender]]
Run Code Online (Sandbox Code Playgroud)

我在管道中使用功能联合和自定义转换器来实现此目的,如下所示。

from sklearn.preprocessing import MultiLabelBinarizer
from sklearn.base import TransformerMixin, BaseEstimator
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.multiclass import OneVsRestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import SGDClassifier
from sklearn.svm import SVC, LinearSVC
import pickle
import pandas as pd
import numpy as np

if __name__ == "__main__":
class ColumnSelector(BaseEstimator, TransformerMixin):
    def __init__(self, column): …
Run Code Online (Sandbox Code Playgroud)

nlp python-2.7 scikit-learn multilabel-classification data-science

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