小编Iva*_*ono的帖子

C#XML基于属性获取节点

我有以下xml:

<root ...>
  <Tables>
    <Table content="..">
    </Table>
    <Table content="interesting">
      <Item ...></Item>
      <Item ...></Item>
      <Item ...></Item>
    </Table>
    ...etc...
  </Tables>
</root>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码从"有趣"节点获取项目:

XElement xel = XElement.Parse(resp);

var nodes = from n in xel.Elements("Tables").Elements("Table")
            where n.Attribute("content").Value == "interesting"
            select n;

var items = from i in nodes.Elements()
            select i;
Run Code Online (Sandbox Code Playgroud)

是否有更简单,更清洁的方法来实现这一目标?

c# xml linq linq-to-xml

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

c#Threads和Thread.Join

我有一个我需要处理的10个项目的列表,每个项目使用一个单独的线程.代码应该是这样的:

foreach (Item item in items)
{
    Thread t = new Thread(() =>
    {
        ProcessItem(item);
    });
    t.Start();
}
Run Code Online (Sandbox Code Playgroud)

我还需要暂停线程(1秒减去执行线程所花费的时间).在这种情况下我应该使用Thread.Sleep吗?

c# parallel-processing multithreading

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

Linq转为列出<T>

我有以下课程:

public class Column
{
    public String Name;
    public String Value;
}

public class ColumnList : List<Column> {}
Run Code Online (Sandbox Code Playgroud)

然后我做:

var cols = (from c in othercolumnlist
            select new Column
            {
               Name = c.Name,
            }).ToList() as ColumnList;
Run Code Online (Sandbox Code Playgroud)

但是它返回null.我怎样才能成功进入我的名单?

c# linq

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

如何向现有的 lambda 表达式添加条件?

考虑以下类:

public class Customer
{
    public int Id {get; set;}
    public int GroupId {get; set;}
    public int Number {get; set;}
    public string Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我在服务层有一个方法可以做到:

public Customer Get(Expression<Func<Customer, bool>> where)
{
    return customerRepository.Get(where);
}
Run Code Online (Sandbox Code Playgroud)

调用代码为:

var customer = customerService.Get(x => x.Number == number);
Run Code Online (Sandbox Code Playgroud)

在上面的方法中,用户根据属性搜索客户(不包括GroupId因为它隐藏在 ViewModel 中)。但是,用户总是被分配到一个组中,因此,他只能搜索其组内的客户。所以GroupId必须动态添加。

如何将GroupId加到where上述方法中的表达式中。该GroupId可能会或可能不会在表达已经可用。

c# linq lambda expression

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

如何在EF代码优先使用Fluent API配置TPH?

我有2个模型,其中第二个模型继承自第一个模型并具有其他属性:

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ItemMap : EntityTypeConfiguration<Item>
{
    public ItemMap()
    {
        this.ToTable("items");

        this.Map(m => m.Requires("type")
            .HasValue("Type1")
            .IsRequired());

        this.HasKey(t => t.Id).Property(t => t.Id).HasColumnName("id")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        //Other properties here...
    }
}

public class SecondItem : Item
{
    public string Other { get; set; }
}

public class SecondItemMap : EntityTypeConfiguration<SecondItem>
{
    public SecondItemMap()
    {
        this.Map(m => m.Requires("type")
            .HasValue("Type2")
            .IsRequired());

        //Other properties here...
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序时,我得到以下异常: …

c# entity-framework ef-code-first

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

正则表达式只允许字母和特殊字符

我目前使用以下正则表达式只允许字符:

"^[a-zA-Z]+$"
Run Code Online (Sandbox Code Playgroud)

我想更改它,以便它允许字符和特殊字符(如“-”)以及在非英语字符中找到的其他字符。

我该怎么做?

regex

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

使用'as'进行C#强制转换

我有以下代码:

public class BaseClass {}
public class Class1 : BaseClass {}
public class Class2 : BaseClass {}

public class BaseClassList : List<BaseClass> {}
public class Class1List : List<Class1> {}
public class Class2List : List<Class2> {}

    public void Setup()
    {
        BaseClassList b = new BaseClassList();
        b.Add(new BaseClass());
        b.Add(new BaseClass());
        b.Add(new BaseClass());

        var list = from a in b
                   select a;

        Class1List c1 = new Class1List();

        foreach (BaseClass a in b)
        {
            var o = a as Class1;
            if (o != null) …
Run Code Online (Sandbox Code Playgroud)

c# inheritance casting list

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

具有服务层的存储库和UoW模式

我正在使用Repository和UoW模式.我的服务看起来像这样:

public class MyService : IService
{
    private readonly IUnitOfWork<MyContext> unitOfWork;
    private readonly IMyRepository myRepository;

    public MyService(IUnitOfWork<MyContext> unitOfWork, IMyRepository myRepository)
    {
        this.unitOfWork = unitOfWork;
        this.myRepository = myRepository;
    }

    //Methods...
}
Run Code Online (Sandbox Code Playgroud)

在服务中,我需要使用其他实体(例如检查权限等).

是否建议在服务中使用相关存储库或直接使用服务?

此外,对于每个用户,我们对每个CRUD操作都有权限(布尔值).这些权限存储在数据库中.

是否应在控制器级别或服务级别检查权限?

c# unit-of-work repository-pattern

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

是否可以拥有通用代表?

我有一个基本的通用usercontrol定义为:

public partial class BaseUserControl<T> : UserControl where T : class
{
    public event ItemsSelectedEventHandler ItemsSelected;
}
Run Code Online (Sandbox Code Playgroud)

代表:

public class ItemsSelectedEventArgs<T> : EventArgs
{
    public IEnumerable<T> Items { get; private set; }

    internal ItemsSelectedEventArgs(IEnumerable<T> items)
    {
        this.Items = items;
    }
}
public delegate void ItemsSelectedEventHandler(object sender, ItemsSelectedEventArgs<T> e);
Run Code Online (Sandbox Code Playgroud)

此用户控件的一种方法是一次加载多个记录并将其作为返回IEnumerable<T>.然后,继承控件将是具体类型,并且它们将依次将事件提升给订阅者(即表单).

但是,上面没有编译,我得到以下错误:

找不到类型或命名空间名称"T"(您是否缺少using指令或程序集引用?)

有可能以其他方式实现我需要的东西吗?

c# generics winforms

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

BitConverter返回错误的字节?

我试图将值转换为字节数组.

例如,我有:

var b1 = BitConverter.GetBytes(0x85);
var b2 = BitConverter.GetBytes(12345);
Run Code Online (Sandbox Code Playgroud)

价值b1是:

{byte[4]}
    [0]: 133
    [1]: 0
    [2]: 0
    [3]: 0
Run Code Online (Sandbox Code Playgroud)

并且b2:

{byte[4]}
    [0]: 57
    [1]: 48
    [2]: 0
    [3]: 0
Run Code Online (Sandbox Code Playgroud)

为什么字节数组的大小总是为4?是否可以返回正确的字节数(即不包括尾随0)?

c#

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

如何将嵌套的XML转换成对应的表?

我有一个复杂的嵌套 XML(从 C# 实体图生成),例如:

<Customers>
  <Customer>
    <Id>1</Id>
    <Number>12345</Number>
    <Addresses>
      <Address>
        <Id>100</Id>
        <Street>my street </street>
        <city>London</city>
      </Address>
      <Address>
        <Id>101</Id>
        <street>my street 2</street>
        <city>Berlin</city>
      </Address>
    </Addresses>
    <BankDetails>
      <BankDetail>
        <Id>222</Id>
        <Iban>DE8439834934939434333</Iban>
      </BankDetail>
      <BankDetail>
        <Id>228</Id>
        <Iban>UK1237921391239123213</Iban>
      </BankDetail>
    </BankDetails>
    <Orders>
      <Order>         
        <OrderLine>         
        </OrderLine>
      </Order>
    </Orders>
  </Customer>
</Customers>
Run Code Online (Sandbox Code Playgroud)

在将上述 XML 数据保存到实际表中之前,我需要先对其进行处理。为此,我创建了相应的表类型。这些表类型中的每一个都有一个额外的列(guid 为 ROWGUID),因此,如果我正在处理新数据(尚未分配主键),我会生成一个唯一键。我使用此列来保持不同表类型之间的关系完整性。

将上述嵌套 XML 转换为其相应表的 SQL 语法是什么,请记住子记录必须引用生成的父 guid?

xml sql sql-server-2014 sql-server-2016

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

如何将 int 转换为日期时间?

我有一个使用以下公式转换为 int 的日期:

var i = date.Year * 65536 + date.Month * 256 + date.Day;
Run Code Online (Sandbox Code Playgroud)

如何将 int 转换回日期?

c#

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

如何使用字符串插值转义双引号

我有这个:

var s = $"my name is {model.Name}":
Run Code Online (Sandbox Code Playgroud)

我希望字符串是:

"我的名字是"某人""

我怎样才能做到这一点?

c#

-9
推荐指数
1
解决办法
1832
查看次数