小编Sim*_*son的帖子

Oracle.DataAccess DataRow.Field <decimal> InvalidCastException

在我的代码中,我System.Data.OracleClient用于ora数据库连接.我想替换这个库(因为它已经过时了)Oracle.DataAccess.不幸的是我发现DataRow.Field()抛出InvalidCastException.同样的行为是(decimal)x.Rows[0]["COLUME_NAME"].我没有这个问题System.Data.OracleClient.

这是代码示例

using (var oracleConnection = new OracleConnection(connectionString))
{
    using (var command = new OracleCommand("select * from tr", oracleConnection))
    {
        var result = new DataTable();
        var adapter = new OracleDataAdapter(command);
        adapter.Fill(result);
        Console.WriteLine(result.Rows[0].Field<decimal>("TR_SEQ_NUM"));
        //Console.WriteLine((decimal)result.Rows[0]["TR_SEQ_NUM"]);
    }
}
Run Code Online (Sandbox Code Playgroud)

TR_SEQ_NUM具有NUMBER(8,0)数据类型,完整异常为:

System.InvalidCastException: Specified cast is not valid.
   at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value)
Run Code Online (Sandbox Code Playgroud)

代码示例使用System.Data.OracleClient但不使用Oracle.DataAccess

我知道我可以使用,Convert.ChangeType但我想知道是否有某种方式可以使用相同的行为System.Data.OracleClient.重构我的所有代码将花费太多时间.

c# oracle

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

在并行执行c#.Net4.0中获取方法的返回值

我使用Parallel来执行具有不同输入值的单个方法,但我想获得该方法的返回值.我怎么才能得到它 ?

public class Work
{
    public static void Main()
    {

        Parallel.Invoke(() => DoWork("Raju"),
                        () => DoWork("Ramu"));
    }

    public static string DoWork(string data)
    {
        return "tesing" + data;
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的方法中我想获得DoWork的返回值.

c# multithreading

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

使用RestSharp反序列化XML响应

我已经阅读了关于这个主题已经提出的各种问题,我仍然没有更接近解决我的问题.

我试图反序列化这个xml响应:

 <?xml version="1.0" encoding="ISO-8859-1" ?>
   <SubmissionResult>
     <Result>ACCEPTED</Result>
       <SubmissionID>
         <RefNo>77587-1425386500</RefNo>
         <Submitted>9</Submitted>
         <ValidNo>7</ValidNo>
         <InvalidNo>2</InvalidNo>
         <InvalidNo_1>08452782055</InvalidNo_1>
         <InvalidNo_2>01234567890</InvalidNo_1>
         <TextvID>77587-1425386500</TextvID>
       </SubmissionID>
     <Credits>999999</Credits>
   </SubmissionResult> 
Run Code Online (Sandbox Code Playgroud)

使用这些类:

[XmlRoot ("SubmissionResult")]
public class SubmissionResult
{
    [XmlElement ("Result")]
    public string Result { get; set; }
    public SubmissionID SubmissionID { get; set; }
    [XmlElement("Credits")]
    public int Credits { get; set; }
}

public class SubmissionID
{
    [XmlElement("RefNo")]    
    public int RefNo { get; set; }
    [XmlElement("Submitted")]    
    public int Submitted { get; set; }
    [XmlElement("ValidNo")]    
    public int ValidNo { get; set; }
    [XmlElement("TextVID")] …
Run Code Online (Sandbox Code Playgroud)

c# xml api restsharp

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

如何使用linq将List <string>转换为Dictionary <string,string>?

我有一个字符串列表:

List<string> tList=new List<string>();
tList.add("a");
tList.add("mm");
Run Code Online (Sandbox Code Playgroud)

我想将此列表转换为字典,因此使用linq键和键的值是相同的

我试过了:

var dict = tList.ToDictionary<string,string>(m => m, c => c);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

无法将lambda表达式转换为类型'IEqualityComparer',因为它不是委托类型

c# linq

4
推荐指数
2
解决办法
5693
查看次数

在Web API中正确使用async/await

我有一个现有的业务库,我想使用Web API公开它.我现有的业务类看起来像

public class Business
{
    public bool DoSomeBusiness()
    {
        //Performing long running  DB operations
        return true;
    }
    //Other methods
}
Run Code Online (Sandbox Code Playgroud)

我正在编写一个Web API方法,如下面的代码和使用asyn/await以获得更好的可伸缩性.

public class SampleController : ApiController
{
    Business _business;
    public ValuesController(Business business)
    {
       _business = business;
    }
    public async Task<HttpResponseMessage> Get()
    {
       var result= await Task.Run(() => _business.DoSomeBusiness());
       return Request.CreateResponse(HttpStatusCode.OK, result);
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方法是否正确?我是否会获得异步行为的真正好处?我不想更改现有的业务层实现,以使它们基于任务.

.net c# asp.net asp.net-mvc asp.net-web-api

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

ASP.NET WebApi响应模型中的订购属性从基类继承href和id

我有一个带有几个响应模型的ASP.NET Web Api 2项目.在尝试创建较小的有效负载时,我向用户提供了将实体折叠为id和href链接的选项,我想自动生成.我希望我的所有主要资源响应模型都继承自只有href和的基本响应模型id.如果我有资源Foo,这看起来像这样:

public class ResourceResponseModel
{
    public string Href { get; private set; }

    public string Id { get; private set; }

    protected ResourceResponseModel(string id)
    {
        Id = id;
    }
}

public class FooModel : ResourceResponseModel
{
    public string Name { get; private set; }

    private ExampleModel (string id, string name)
        : base(id)
    {
        Name = name;
    }

    internal static FooModel From(Foo foo)
    {
        return new FooModel(
            foo.Id,
            foo.Name
        );
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# asp.net json httpresponse asp.net-web-api2

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

如何处理 LINQ to Entities 仅支持无参数构造函数和初始值设定项

因此,当我尝试从 Web Api 获取数据时,就会发生这种情况:

异常消息:

LINQ to Entities 仅支持无参数构造函数和初始值设定项。

这是我的服务:

public async Task<ICollection<TicketDto>> GetAllUnansweredTicketsAsync()
{
        return await _context.Tickets.Include(m => m.Message)
                        .Include(u=>u.User)
                        .OrderByDescending(d=>d.Message.Date)
                        .Select(t => new TicketDto(t)).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

这就是我的 DTO 的样子:

public class TicketDto
{
    public int ID { get; set; }
    public string Username { get; set; }
    public string Issue { get; set; }
    public DateTime Date { get; set; }

    public TicketDto(Ticket ticket)
    {
        ID = ticket.ID;
        Username = ticket.User.UserName;
        Issue = ticket.Message.Title;
        Date = ticket.Message.Date;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下如何解决这个问题吗?

c# linq ajax entity-framework

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

Linq Order By Contains List

我有一个int的列表,model.SelectedIngredients在这个例子中,列表包含值[15128, 4593,15046,].我使用此列表作为我的Linq查询中的过滤器,如下所示:

List<INGREDIENT> selectedIngredients = db.INGREDIENT.Where(i => model.SelectedIngredients.Contains(i.IngredientId)).ToList();
Run Code Online (Sandbox Code Playgroud)

但是,这会将IngredientId升序的结果排序为默认值[4593,15046,15128].

我想要的是让selectedIngredients它们以与它们相同的顺序返回model.SelectedIngredients.

我知道我可以在for循环中做到这一点,但我只是想知道我是否有办法在Linq查询中做到这一点?

谢谢

c# sql linq

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

重新启动部署在Mule_Runtime/apps中的mule应用

如何使用命令重新启动在mule运行时中部署的特定应用程序.例如,我在Mule_Runtime/apps下有一个名为mymuleapp的应用程序.由于我在同一运行时运行其他应用程序,我只想单独重启mymuleapp.

我没有使用cloudhub.我问的原因是,我已将属性文件放在应用程序之外,因此,只要属性发生任何变化,我就会更新它并重新启动应用程序.

请告诉我有没有办法这样做?

mule

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