我的dbml文件中有以下3个类:
public class Player {
public int PlayerID {get; set;}
public string Name {get; set;}
}
public class PlayerItem {
public int PlayerItemID {get; set;}
public int PlayerID {get; set;}
public int ItemID {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
在Player.ID和PlayerItem.PlayerID之间创建了一个关联
Public Class CustomItem {
public int ItemID {get; set;}
public string ItemName {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
这是设置:
<Player><Item>如何只选择那些在PlayerItem列表中至少有一个自定义项目的玩家?这基本上匹配每个Player的PlayerItems中的ItemID和CustomItem中的Item ID.
最终,我想有一个简单的球员列表<Player>- 列表- 可以使用.
LINQ让这件事变得简单:
players.Where( p => p.PlayerItemList.Any(
pi => customItems.Any( ci => ci.ItemID == pi.ItemID ) );
Run Code Online (Sandbox Code Playgroud)
这也可以用查询形式编写:
var result = from p in players
from pi in p.PlayerItemList
where customItems.Any( ci => ci.ItemID == pi.ItemID ) );
Run Code Online (Sandbox Code Playgroud)
如果您从自定义项集中创建查找表或字典,这将表现最佳:
var customItemDict = customItems.ToDictionary( ci => ci.ItemID );
var result = from p in players
from pi in p.PlayerItemList
where customItemDict.ContainsKey( pi.ItemID ) );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |