小编And*_*ite的帖子

C#:IEnumerable,GetEnumerator,一个简单,简单的例子,请!

试图创建一个实现get枚举器的uebersimple类,但由于缺少简单/无功能的例子而疯狂失败.我想做的就是在数据结构周围创建一个包装器(在这种情况下是一个列表,但我以后可能需要一个字典)并添加一些函数.

public class Album
{
    public readonly string Artist;
    public readonly string Title;
    public Album(string artist, string title)
    {
         Artist = artist;
         Title = title;
    } 
}
public class AlbumList
{
    private List<Album> Albums = new List<Album>;
    public Count { get { return Albums.Count; } }

    .....
    //Somehow GetEnumerator here to return Album
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c# generics dictionary list

27
推荐指数
3
解决办法
5万
查看次数

使用Foreach.Where替换if(x)Foreach()(x)

可能是一个愚蠢的问题,但我有很多:

if(X)
{
  foreach(var Y in myList.Where(z => z == 1)
  {
  }
} 
Run Code Online (Sandbox Code Playgroud)

一些代码中的构造
正在替换它

foreach(var Y in myList.Where(z => X && z == 1) { }
Run Code Online (Sandbox Code Playgroud)

疯?

它可能不太可读,但编译器会优化它以使它几乎相同的代码吗?

c# linq coding-style

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

保持应用程序数据库不可知(ADO.NET与封装DB逻辑)

我们正在制作一个相当严肃的应用程序,需要与客户想要使用的数据库保持无关.最初我们计划支持MySQL,Oracle和SQL Server.表和视图和查询一样简单(没有真正奇特的SQL),因此问题是:

  1. 使用本机数据库驱动程序(MySQLDbConnection等)并封装执行查询和处理结果的逻辑或
  2. 使用通用的OleDbConnection

显然,选项2不涉及开销,但我认为性能不如原生访问那么大?

c# mysql database oracle oledb

13
推荐指数
3
解决办法
5734
查看次数

设计建议.使用DataTable或List <MyObject>作为通用规则检查器

我有大约100,000行通用数据.此数据的列/属性是用户可定义的,并且是常用的数据类型(字符串,整数,双精度,日期).将有大约50列/属性.

我有2个需求:

  • 能够使用表达式计算新列/属性,
    例如Column3 = Column1*Column2.
    最终我希望能够使用回调来使用外部数据,
    例如Column3 = Column1*GetTemperature
    表达式相对简单,数学运算,求和,计数和IF是唯一必需的函数.
  • 能够过滤/分组数据并执行聚合,
    例如Sum(Da​​ta.Column1)Where(Data.Column2 =="blah")

    据我所知,我有两个选择:
    1.使用DataTable.
    =>上面的第1点是通过使用DataColumn实现的
    .Expression =>上面的第2点是通过使用DataTable.DefaultView.RowFilter或DataTable.Select()和C#代码实现的

    .2.使用每个都带有Dictionary <string的通用对象列表, object>存储值.
    =>点1可以通过类似NCalc
    =>点2使用LINQ实现

    DataTable:
    Pros: DataColumn.Expression is inbuilt
    Cons: RowFilter & coding c# is not as "nice" as LINQ, 
          DataColumn.Expression does not support callbacks(?) 
          => workaround could be to get & replace external value when creating 
             the calculated column
    
    GenericList:
    Pros: LINQ syntax, NCalc supports callbacks
    Cons: Implementing NCalc/generic calc engine
    

    基于以上所述,我认为GenericList方法会获胜,但我没有考虑的是性能,由于某些原因,我认为使用数据表会更好. …

  • c# linq datatable list

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

    LINQ:从列表中选择项目(Group By/Select/Sum&Max!)

    只是让我的头围绕Linq并享受很多乐趣!任何人都可以帮我查询:
    我有一个数据列表:

        Key  Value
        Aaa  12
        AaA  10
        AAa  5
        BBB  2
        Bbb  1
    
    1.我想GROUP BY Key.ToUpper()
    2.对于每一个组,我需要马克斯(价值)之和(数值)
    3.对于每一个组我想有选择项的值!= MAX(值)
    的最终结果应该是这样的:
        Key Max Total
        AaA 12  27
        AAa 12  27
        Bbb 2   3
    谢谢!

    更新,实际上我还需要最大条目中的密钥:

        Key Max Total Correct
        AaA 12  27    Aaa
        AAa 12  27    Aaa
        Bbb 2   3     BBB 

    c# linq select group-by

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

    删除各种大括号中的文本

    我有一个字符串"hello [world] this {is} a(test)"我想删除大括号中的所有文本,例如返回"你好这个".但只有大括号匹配.
    有人有一个很好的解决方案吗?

    c# string

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

    静态字符串[]的C#性能包含()(slooooow)与==运算符

    只是一个快速查询:我有一段代码将一个字符串与一长串值进行比较,例如

    if(str == "string1" || str == "string2" || str == "string3" || str == "string4".
         DoSomething();
    
    Run Code Online (Sandbox Code Playgroud)

    代码清晰度和可维护性的兴趣我把它改成了

    public static string[] strValues = { "String1", "String2", "String3", "String4"};
    ...
    if(strValues.Contains(str)
        DoSomething();
    
    Run Code Online (Sandbox Code Playgroud)

    只发现代码执行时间从2.5秒到6.8秒(执行大约200,000次).
    我当然明白了一个轻微的表现权衡,但300%?
    无论如何,我可以不同地定义静态字符串以提高性能?
    干杯.

    c#

    6
    推荐指数
    3
    解决办法
    3938
    查看次数

    C#:遍历数据表:Rows,Select()或AsEnumerable()

    foreach (DataRow row in myDataTable.Select())
    
    foreach (DataRow row in myDataTable.AsEnumerable())
    
    foreach (DataRow row in myDataTable.Rows)
    
    Run Code Online (Sandbox Code Playgroud)

    有什么区别?

    c# linq datatable

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

    在linq foreach中调用方法 - 有多少开销?

    我正在考虑用Linq替换很多内联的foreach,这样做会产生新的方法,例如Current:

    foreach(Item in List)
    {
        Statement1
        Statement2
        Statement3
    }
    
    Run Code Online (Sandbox Code Playgroud)

    理念:

    List.Foreach(Item => Method(Item))
    
    Run Code Online (Sandbox Code Playgroud)

    显然,Method()包含Statement1..3

    这是一种好的做法还是数千次调用方法会降低性能?我的名单有10,000-100,000个元素.

    .net c# linq performance

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

    C#:字符串拆分返回字符串列表和分隔符列表?

    在C#中是否有任何内置方式将文本拆分为单词和分隔符数组?我想要的是:

    text = "word1 + word2 - word3";
    string[] words = text.Split(new char[] { '+', '-'});
    //Need list '+', '-' here?
    
    Run Code Online (Sandbox Code Playgroud)

    有任何想法吗?显然我可以手工处理文本...... :)

    c# string split

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