小编Chr*_*tos的帖子

Linq Joins上的System.OutOfMemoryException

我有以下查询:

var data = (from ftr in db.TB_FTR
            join mst in db.TB_MST on ftr.MST_ID equals mst.MST_ID
            join trf in db.TB_TRF on mst.TRF_ID equals trf.ID
            select new TRFData 
            { 
                City = ftr.FTR_CITY, 
                County = ftr.FTR_COUNTY, 
                Type = trf.TRF_TYPE 
            }).ToList();
Run Code Online (Sandbox Code Playgroud)

TB_FTR表包含3,000,000行,TB_MST包含1,100,000行,TB_TRF包含340行.如何使此加入工作?这有诀窍或解决方法吗?谢谢.

c# linq entity-framework out-of-memory

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

将对象转换为 List<object>

由于某些我无法控制的原因,需要定义我的方法来接受一个对象类型的参数。但我知道这个参数的值实际上是 List 类型,带有一个我不知道的泛型参数。

我正在尝试将此对象强制转换为 List<object>,但在不知道确切的泛型参数是什么的情况下不知道如何执行此操作。

我想做这样的事情:

public static List<object> ConvertToList(object input)
{
    if (input.GetType().GetGenericTypeDefinition().IsAssignableFrom(typeof(List<>))) 
    {
        //Of course this does not work, because input might for example be of type List<string>
        return (List<object>) input;
    }
    else
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道,如果我有List<T>而不是object input,使用它会很容易:

return input.Cast<object>()
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我被对象参数困住了。知道我如何解决这个问题吗?

c#

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

c#迭代列表以合并具有相同字段的项目

所以我会有一个带有匹配字段的数据列表:

class Data
{
   public string type;
   public int amount;
   public Data(string type, int amount)
   {
       this.type = type;
       this.amount = amount;
   }
}


List<Data> list = new List<Data>()
        {
            new Data("A", 20),
            new Data("A", 10),
            new Data("B", 20),
            new Data("B", 20),
            new Data("C", 20)
        };
Run Code Online (Sandbox Code Playgroud)

我希望这些项目合并为一个,如果它们的类型相同,则添加该值。所以我会有“A”=> 30,“B”=> 40 和“C”=> 20。

我可以解决这个问题:

    private IEnumerable<Data> MergeDuplicates(IEnumerable<Data> list)
    {
        Dictionary<string, long> dict = new Dictionary<string, long>();
        foreach(Data data in list) 
        {
            if (dict.ContainsKey(data.type)) 
            {
                dict[data.type] += data.amount;
                continue;
            }
            dict.Add(data.type, data.amount);
        } …
Run Code Online (Sandbox Code Playgroud)

c# linq algorithm

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

Lambda 到 SQL 的转换

因此,我通过创建一个漂亮的数据访问层来享受自己和 C# 带来的乐趣。

我有以下方法将简单表达式转换为 SQL where 子句,但它仅适用于以下内容

var people = DataAccessLayer.SelectAllPeople(x => x.Name == "Donald");
//Do some changes to the list
people[0].Surname = "Jansen"
var m = p.BuildUpdateQuerry(people[0], x => x.PersonID == 1);
Run Code Online (Sandbox Code Playgroud)

我得到以下结果

UPDATE People SET Name='Donald',Surname='Jansen' WHERE (PersonID = 1)
Run Code Online (Sandbox Code Playgroud)

但现在如果我执行以下操作

var m = p.BuildUpdateQuerry(people[0], x => x.PersonID == people[0].PersonID);
Run Code Online (Sandbox Code Playgroud)

我得到以下结果

UPDATE People SET Name='Donald',Surname='Jansen' WHERE (PersonID = value(ReflectionExampleByDonaldJansen.Program+<>c__DisplayClass0).people.get_Item(0).PersonID)
Run Code Online (Sandbox Code Playgroud)

我用来将 Lambda 转换为字符串的方法是

public static string GetWhereClause<T>(Expression<Func<T, bool>> expression)
{
    var name = expression.Parameters[0].ToString();
    var body = expression.Body.ToString().Replace("\"", "'"); …
Run Code Online (Sandbox Code Playgroud)

c# lambda

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

LINQ中的条件Groupby

我试图做非常相似的linq语句,但条件是它们略有不同.现在我只是用小修改重复整个陈述,但这应该更简洁.我所挣扎的是在语句中进行条件groupby和条件选择.我的长版本是:

class data
{
    public string year;
    public string quarter;
    public string month;
    public string week;
    public string tariff;
    public double volume;
    public double price;
}

class results
{
    public string product_code;
    public string tariff;
    public double volume;
    public double price;
}

class Program
{
    public static List<results> aggregationfunction(List<data> inputdata, string tarifftype, string timecategory)
    {
        List<results> returndata = new List<results>();

        if (tarifftype.Equals("daynight") & timecategory.Equals("yearly"))
        {
            returndata = inputdata.GroupBy(a => new { a.tariff, a.year })
                                  .Select(g => new results { product_code …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

C#查找并编辑列表中的单个对象

public class kDrinki
{
    public int id {get; set;}
    public string nazwa { get; set; }
    public string skladniki { get; set; }
    public string opis { get; set; }
    public string sciezka { get; set; }

    public kDrinki(int _id, string _nazwa, string _skladniki, string _opis, string _sciezka)
    {
        id = _id;
        nazwa = _nazwa;
        skladniki = _skladniki;
        opis = _opis;
        sciezka = _sciezka;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有那门课.我创建了对象的List lst_pDrinkow并添加了一些表单XML.我不知道如何从列表中只找到单个对象(使用对象id而不是列表id)并编辑他的所有数据(不仅仅是单个参数).

c# linq class list

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

项目之间的类持久化

我知道我不应该问这个问题,但不管是什么,我都错过了让我疯了!我以前做了很多次,我只能把它放到老年和轻微的衰老.

我有一个类,有两个对象,在构造函数中初始化...

public class EbayFunctions
{
    private static ApiContext apiContext = null;
    private static List<StoreCategoriesFlattened> storeCategories =  new List<StoreCategoriesFlattened>();

    public EbayFunctions()
    {
        ApiContext apiContext = GetApiContext();
        List<StoreCategoriesFlattened> storeCategories = GetFlattenedStoreCategories();
    }
    public string GetStoreCategoryIdForItem(string category)
    {
       var result = storeCategories.Find(x => x.CCDatabaseMatch == category);
       return ""; //Ignore will return a value
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个表单应用程序(测试工具),使用该类和按钮单击我调用方法...

namespace EbayTestHarness
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void cmdGetEbayStoreCatID_Click(object sender, EventArgs e)
        {
            EbayFunctions ebf = new …
Run Code Online (Sandbox Code Playgroud)

c# class

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

在c#开始之前延迟做一些代码

我正在创建一些生成一些文本的应用程序,但是当我点击我的按钮时,大约需要1或2秒后会显示一些消息框,但我想将其增加到5或6秒.点击按钮时,这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    progressBar1.MarqueeAnimationSpeed = 50;
    //my code
    // delay here for 5 or 6 sec
    MessageBox.Show(id);
    pictureBox1.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)

那我该怎么做呢?

c#

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

将列表的元素移动到另一个列表

下面的代码失败了,我想这是因为Remove() - 方法破坏了循环顺序.但是我该如何解决呢?

List<string> test = new List<string>();
List<string> test2 = new List<string>();
test.Add("test");
test.Add("test");
test.Add("test");
test.Add("test");
foreach(string t in test)
{
    test2.Add(t);
    test.Remove(t);
}
Run Code Online (Sandbox Code Playgroud)

c#

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

如何创建.NET数量下拉列表

我不是.NET编码器,但我必须更新表格.表单是动态构建的,一些项目具有数量字段.我想将数量的文本框更改为数字1到@ item.MaxAmt的下拉列表(每个项目都有一个允许的最大数量的值).

我如何在.NET/cshtml中编写下拉代码?像这样......

@Html.DropDownList("MaxQty",1-@item.MaxAmt)
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc razor

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

您向DateTime类添加的时间越多,您损失的时间就越多

我在C#中的DateTime.AddHours方法有问题。我已经注意到,我添加到特定日期/时间的时间更多。我失去的更多的天数/小时数。例如:

DateTime DateOne = DateTime.Now;;
DateTime DateTwo = DateOne.AddHours(438000); // 50 years
Run Code Online (Sandbox Code Playgroud)

我为DateOne课程增加了50年的学习时间,因此我应该得到3/10/2069。

但是,如果打印,DateOne您将得到:3/10/2019,这是当前日期,但是如果打印,DateTwo您将得到:2/25/2069。在50年的变化中损失了10天以上。

一定有问题。我到底在做什么错?

c# time date

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

如何使用List.GetRange()

int k=7;
int index1=5; 
Run Code Online (Sandbox Code Playgroud)

arrayNames 有11个值.

if (k - index1 > 1)
{
   arrayNames1 = arrayNames.GetRange(index1, k);
}
Run Code Online (Sandbox Code Playgroud)

但它会抛出一个错误,因为" 偏移和长度超出了数组的范围,或者计数大于从索引到源集合末尾的元素数量. "

c#

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

错误无法在字符串文件路径上隐式转换类型'void'为'string'

GridViewRow row = GridView1.FooterRow;
string filename = ((FileUpload)row.FindControl("FileUpload1")).FileName.ToString();
string filepath = ((FileUpload)row.FindControl("FileUpload1")).PostedFile.SaveAs(Server.MapPath("~/UploadImages/") + filename;
Run Code Online (Sandbox Code Playgroud)

c#

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

标签 统计

c# ×12

linq ×4

class ×2

.net ×1

algorithm ×1

asp.net-mvc ×1

date ×1

entity-framework ×1

lambda ×1

list ×1

out-of-memory ×1

razor ×1

time ×1