class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
List<Person> theList = populate it with a list of Person objects
Run Code Online (Sandbox Code Playgroud)
如何获取一个字符串,其中包含以逗号分隔的列表中对象的所有FirstName.例如:约翰,彼得,杰克
一个基本的解决方案是迭代每个对象,但我确信有一个单行解决方案.
谢谢.
已经问过这个问题的各种风格,但我还没有找到正确的答案.
假设我在文件服务器上有一个.jpg图像,我需要获得它的高度和宽度.我怎么在asp.net中做到这一点?
我已经看到一些答案,建议做这样的事情:
System.Drawing.Image image=System.Drawing.Image.FromFile(PicturePath);
int ActualWidth=image.Width;
int ActualHeight=image.Height;
image.Dispose();
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,除了不支持在ASP.NET服务中使用System.Drawing命名空间中的类.
那么,如何在ASP.net中获得图像的实际高度和宽度?
假设我想使用正则表达式在字符串中的每个单词之前添加"test".
string MyText="hello world"
string Pattern = "\w+";
Run Code Online (Sandbox Code Playgroud)
我能做到这一点:
Regex.Replace(MyText, Pattern, "test$&")
Run Code Online (Sandbox Code Playgroud)
或这个:
Regex.Replace(MyText, Pattern, m=>"test"+m.Value)
Run Code Online (Sandbox Code Playgroud)
我会得到相同的结果,那么lambda表达式中$&和Value之间的区别是什么?如果结果没有差异,是否存在性能问题?
我有以下通用列表,其中填充了一个字符串列表:
List<string> mylist =new List<string>();
myList.add("string1");
myList.add("string2");
Run Code Online (Sandbox Code Playgroud)
假设我想在每个字符串的末尾添加"test",我该如何以简单的方式完成?直觉上,我试过这个编译好了:
myList.ForEach(s => s = s + "test");
Run Code Online (Sandbox Code Playgroud)
但是,如果我再查看列表的内容,则没有任何改变.我想我可以使用for循环迭代List但我正在寻找一些非常简单的东西,使用ForEach看起来非常整洁....但似乎不起作用.有任何想法吗?
在我看来,业务对象的ID字段应该是只读的(公共get和私有集),因为根据定义,ID永远不会改变(因为它唯一地标识数据库中的记录).
这会在您创建新对象(尚未设置ID)时产生问题,通过存储过程将其保存在数据库中,例如返回新创建的ID,如果读取ID属性,如何将其存储回对象-只要?
例:
Employee employee = new Employee();
employee.FirstName="John";
employee.LastName="Smith";
EmployeeDAL.Save(employee);
Run Code Online (Sandbox Code Playgroud)
如果此属性是只读的,那么Save方法(实际连接到数据库以保存新员工)如何更新Employee对象中的EmployeeId属性(应该是EmployeeId在创建后永远不会更改).
看起来Id应该可以由DAL写入,并且只读给世界其他地方.如果DAL类和Business对象在不同的程序集中,您如何实现这一点?
我不想在Employee类中创建一个Save方法,因为这个类应该与数据库无关.
可能重复:
触发器是否可以找到修改数据的存储过程的名称?
我有一个带触发器(更新时)的表.当执行触发器时,我想知道更新有问题的表的存储过程的名称.
说我有这个班:
class myclass
{
public int Field1{ get; set; }
public int? Field2 { get; set; } //Note Field2 is nullable
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用来自数据库的数据填充通用列表.由于GetSqlInt32实现了INullable,我认为下面的代码可以工作.它没有.如果Field2为null,则会生成错误.
List<myclass> mylist=new List<myclass>();
int Field1_Ordinal = rdr.GetOrdinal("Field1");
int Field2_Ordinal = rdr.GetOrdinal("Field2");
SqlDataReader rdr = cmd.ExecuteReader(); //Execute a stored procedure to retrieve data from the database
while (rdr.Read())
{
mylist.Add(new myclass
{
Field1 = rdr.GetSqlInt32(Field1_Ordinal).Value,
Field2 = rdr.GetSqlInt32(Field2_Ordinal).Value //Error if field2 is null
});
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它不起作用?
要获取当前页面的网址,我通常会执行以下操作:
string path = Request.Path;
Run Code Online (Sandbox Code Playgroud)
如果我在Server.Transfer之后执行此操作,那么我将获得传输完成的页面路径.如何获取当前页面?
例如:
在Page1.aspx上我执行Server.Transfer("Page2.aspx")
在Page2.aspx上Request.Path返回/Page1.aspx而不是/Page2.aspx
我想得到/Page2.aspx.我怎么才能得到它?
说我有这个数组:MyArray(0)="aaa"MyArray(1)="bbb"MyArray(2)="aaa"
是否有.net功能可以给我独特的价值?我希望这样的东西作为函数的输出:OutputArray(0)="aaa"OutputArray(1)="bbb"
在我的应用程序中,我需要显示由不同存储过程返回的记录列表.每个存储过程返回不同类型的记录(即列数和列类型不同).
我最初的想法是为每种类型的记录创建一个类,并创建一个函数,该函数将执行相应的存储过程并返回List <MyCustomClass>.像这样的东西:
public class MyCustomClass1
{
public int Col1 { get; set; } //In reality the columns are NOT called Col1 and Col1 but have proper names
public int Col2 { get; set; }
}
public static List<MyCustomClass1> GetDataForReport1(int Param1)
{
List<MyCustomClass1> output = new List<MyCustomClass1>();
using (SqlConnection cn = new SqlConnection("MyConnectionString"))
using (SqlCommand cmd = new SqlCommand("MyProcNameForReport1", cn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Param1", SqlDbType.Int).Value = Param1;
SqlDataReader rdr=cmd.ExecuteReader();
int Col1_Ordinal = rdr.GetOrdinal("Col1");
int Col2_Ordinal = rdr.GetOrdinal("Col2");
while (rdr.Read()) …
Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×2
asp.net ×2
arrays ×1
datareader ×1
foreach ×1
generic-list ×1
image ×1
list ×1
null ×1
regex ×1
sql-server ×1
unique ×1