C# 查找具有最低LINQ值的副本

C# 查找具有最低LINQ值的副本,c#,sql,linq,erp,C#,Sql,Linq,Erp,我有一个链接到SQL表的小应用程序。 该特定表具有以下字段: 键1p。钥匙 shortchar05 03号 04号 05号 此应用程序用于更新股票 因此,对于key1=1,我在shortchar05中输入item1,number05 total,例如,我将有5个。数字04这用于我发行了多少个项目1,数字03应该更新为数字05和数字04之间的库存差异 如果shortchar05的值是不同的,例如item1、item2、item3等,我知道如何使应用程序工作,但这不是我感兴趣的 如果我有以下情况怎么

我有一个链接到SQL表的小应用程序。 该特定表具有以下字段:

键1p。钥匙 shortchar05 03号 04号 05号 此应用程序用于更新股票

因此,对于key1=1,我在shortchar05中输入item1,number05 total,例如,我将有5个。数字04这用于我发行了多少个项目1,数字03应该更新为数字05和数字04之间的库存差异

如果shortchar05的值是不同的,例如item1、item2、item3等,我知道如何使应用程序工作,但这不是我感兴趣的

如果我有以下情况怎么办:

key1 shortchar05 number05 number04 number03
===========================================
1    item1          5        3        2
2    item2          7        4        3
3    item3          8        2        6
现在,如果我正在创建下一个值为4的key1,但是想要选择item1,现在总数将是2,这将进入数字05,我想要发布一个item1

对于key1=5,我希望再次选择item1,因此我希望选择的是列number03 key=4中值最低的item1,而不是key1=1

这就是我想要的,对于n个项目,如果我选择itemX,我想显示重复的itemX,在number03中的最小值将是更新的总数

我希望我已经说得够清楚了 谢谢大家!

这只需在创建新的key1并输入新的独特项时完成


此查询将仅查找重复值,并仅选择最小值:

var duplicateMin = (yourTable.GroupBy(x=>x).Where(g=>g.Count()>1).Select(y=>y.DuplicateValue)).Min();
代码中的变量命名看起来很糟糕,几乎不可能在后面阅读。请考虑重新命名变量。我的意思是只要看看你的名字:ttUD04\u R,ttUD04,ttUD04\u Recss,号码05,号码03。这是毫无意义的,我可以向你保证,任何在你之后试图阅读的人都绝对不知道你在做什么。看来你也不知道

我建议将它们重命名为更合理的名称,如stockItems、updatedStock、itemStock


如何选择ItemXen(即使在编号03中具有最低值的重复项)

你如何陈述确实很重要,例如,如果我这样陈述:

从与本例shortchar05='item1'中的条件匹配的所有项中,为本例中的字段number03选择最低值

那么到linq的翻译很简单

符合条件的所有项目:

var result = sourceList.Where(x => x.shortchar05 == 'item1');
number03字段的最低值-按该字段排序并取第一个:

var result = sourceList.Where(x => x.shortchar05 == 'item1')
                       .OrderByDescending(x => x.number03)
                       .FirstOrDefault();

你谈论了很多没有意义的事情,然后你不提任何问题。。。您有什么问题吗?即使在编号03中有最小值的重复项,如何选择项X?这怎么说不通呢?我已经解释过了,没有说太多的东西!如果你不想帮忙,那就别这么做,但别告诉我这是毫无意义的。谢谢Peroxy,是的,你是对的,我应该重新命名它们,而不是像在我的表中那样使用它们。这就是在我的Epicor表中如何定义它们的,所以我把它们保持这样。对其他人来说,这可能会让人困惑,但对我来说,这很好。我很感激!Peroxy我尝试过你的解决方案,但它没有包含DuplicateValue的定义。有没有特别的参考?是的,DuplicateValue是我想到的,我不知道你在寻找什么样的DuplicateValue。它的名称应该是:y=>y.YourValueName.well,ShortChar05列中的一个随机值我理解你所说的,但问题是我可能没有说清楚,很抱歉,我的表中有4000行,多个item1或多个item2等等。例如,现在我打开窗口,在文本框shortchar05->item239中写入内容,我希望看到的是,它以存储在number03列中的最小值加载item239,即使它是0。@John-这就是我的代码所做的。只需将where更改为所需的值或变量x.shortchar05=='item1'否,因为它选择最高的值,而我需要最低的值。如果我选择FirstOrDefault并按升序排序,则在表中创建新行后,它已经假定number03中的值为0。@John-没有表。如果你想要最小值的do OrderBy,如果你想要最大值的do OrderByDescending-这里有什么问题?Hogan,是的,如果你检查了我在描述中所说的,你就会明白我的意思了。当我创建一个新的Key1主键时,我可以输入一个新项目或输入以前存储的项目。我知道OrderBy和OrderByDescending是做什么的,我需要将存储在第03列中的最小值传递到shortchar05中,以防在我的表中创建新键1->新行时选择现有项,创建新行后,使用OrderBy,最小值将为0,我不希望这样,但当前键1-1第一个键1在当前键之前的数字03的最小值。
var duplicateMin = (yourTable.GroupBy(x=>x).Where(g=>g.Count()>1).Select(y=>y.DuplicateValue)).Min();
var result = sourceList.Where(x => x.shortchar05 == 'item1');
var result = sourceList.Where(x => x.shortchar05 == 'item1')
                       .OrderByDescending(x => x.number03)
                       .FirstOrDefault();