相关疑难解决方法(0)

使用Lambda或LINQ将类实例转换或映射到另一个实例的列表?

我有以下两个类:

class MyData {
  public List<string> PropertyList { get; private set;}
  public string PropertyB { get; set; }
  public string PropertyC { get; set; }
}

class MyData2 {
  public string PropertyA { get; set;}
  public string PropertyB { get; set; }
  public string PropertyC { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个MyClass实例,我需要将它转换为MyData2列表.我可以通过循环MyData.PropertyList并缓存其他属性值并将它们插入MyData2列表来实现,如下所示:

string propertyB = myData.PropertyB;
string propertyC = myData.PropertyC;
List<MyData2> myData2List = new List<MyData>();
foreach(string item in myData.PropertyList)
{
  myData2List.Add(new myData2() { item, propertyB, propertyC });
}
Run Code Online (Sandbox Code Playgroud)

不确定是否可以使用LINQ或Lambda表达式的.Net 3.5功能完成此操作?

c# linq lambda

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

Linq和二进制搜索 - 改进这个缓慢的Where语句?

我有两个系列,每个系列包含大约40,000个项目.

列表2中的元素通过外键链接到列表1的元素.

对于列表一的每个元素,我想在列表二中找到相应的元素.

像这样的东西:

foreach(var item in list1)
{
  var match = list2.Where(child => child.ID == item.ChildID).FirstOrDefault();
  item.Child = match;
}
Run Code Online (Sandbox Code Playgroud)

这有效,但它很慢.

现在,list1和list2都是按照这些键从数据库中排序的.因此list1按ChildID排序,list2按ID排序(相同值).

我认为二进制搜索会大大提高速度,但我在某处读到了Linq会在Where子句中为列表选择最合适的策略.也许我需要明确地转换为排序列表?或者我可能需要使用比较器实现自定义二进制搜索算法?

任何见解都表示赞赏.

谢谢.

c# linq binary-search

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

LINQ编码如何工作?幕后发生了什么?

例如:

m_lottTorqueTools = (From t In m_lottTorqueTools _
                     Where Not t.SlotNumber = toolTuple.SlotNumber _
                     And Not t.StationIndex = toolTuple.StationIndex).ToList
Run Code Online (Sandbox Code Playgroud)

这里出现了什么算法?在后台是否有嵌套的for循环?它是否为这些字段构建哈希表?我很好奇.

linq clr

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

从逗号分隔的字符串中查找特定字符串的最简单方法

我必须从逗号分隔的字符串中获取不同的值.输入字符串可以包含重复的值.这是自动完成功能.例如:

我有一个字符串:shop,dell,image,just,just do,file,just,do,shop .... 我的要求是当我传递' jus '时,输出字符串应该是:" just,just do " .

c# csv

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

标签 统计

c# ×3

linq ×3

binary-search ×1

clr ×1

csv ×1

lambda ×1