我有以下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)
是否有更简单,更清洁的方法来实现这一目标?
我有一个我需要处理的10个项目的列表,每个项目使用一个单独的线程.代码应该是这样的:
foreach (Item item in items)
{
Thread t = new Thread(() =>
{
ProcessItem(item);
});
t.Start();
}
Run Code Online (Sandbox Code Playgroud)
我还需要暂停线程(1秒减去执行线程所花费的时间).在这种情况下我应该使用Thread.Sleep吗?
我有以下课程:
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.我怎样才能成功进入我的名单?
考虑以下类:
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可能会或可能不会在表达已经可用。
我有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)
当我运行应用程序时,我得到以下异常: …
我目前使用以下正则表达式只允许字符:
"^[a-zA-Z]+$"
Run Code Online (Sandbox Code Playgroud)
我想更改它,以便它允许字符和特殊字符(如“-”)以及在非英语字符中找到的其他字符。
我该怎么做?
我有以下代码:
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) 我正在使用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操作都有权限(布尔值).这些权限存储在数据库中.
是否应在控制器级别或服务级别检查权限?
我有一个基本的通用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指令或程序集引用?)
有可能以其他方式实现我需要的东西吗?
我试图将值转换为字节数组.
例如,我有:
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)?
我有一个复杂的嵌套 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?
我有一个使用以下公式转换为 int 的日期:
var i = date.Year * 65536 + date.Month * 256 + date.Day;
Run Code Online (Sandbox Code Playgroud)
如何将 int 转换回日期?
我有这个:
var s = $"my name is {model.Name}":
Run Code Online (Sandbox Code Playgroud)
我希望字符串是:
"我的名字是"某人""
我怎样才能做到这一点?
c# ×11
linq ×3
xml ×2
casting ×1
expression ×1
generics ×1
inheritance ×1
lambda ×1
linq-to-xml ×1
list ×1
regex ×1
sql ×1
unit-of-work ×1
winforms ×1